我试图在设计中实现一个Guest用户,但是在这样做的时候,user_signed_in?总是评估为true,我怎样才能绕过这个问题呢?
我不能使用signed_in?,因为我有Admin和User,所以如果我在管理面板上注册,然后转到主网站,它会认为我使用了signed_in?
这是代码
应用控制器
def current_user
if devise_controller?
@current_user = super
else
@current_user ||= super || Guest.new
end
end
视图
<p>Welcome <
我正在使用devise,并创建了一个服务对象--一切都如预期的那样完美地工作。然而,我想知道我将如何包括current_user?因为我总是要通过current_user还是user_signed_in?变量,当我在不同的类和视图中使用相同的方法时,这是很烦人的,我该怎么做呢?
目前,我有这个测试:
class User
class GetStart
attr_reader :current_user
def initialize(user)
@current_user = user
p current_
我是Rails的新手。我使用的是Rails 4,但我找不到他们是如何做到这一点的,也不知道它叫什么。
我从devise得到了这个想法,你可以使用devise并在你的application.html.erb文件中实现这样的东西:
<% if user_signed_in? %>
Logged in as <strong><%= current_user.email %></strong>.
其中user是设计模型。但是,当我尝试搜索user_signed_in或current_user变量时,我根本找不到它!
因此,从本质上讲,我要做的
我想同时在来自不同地方的rails中测试sign_in,所以我在rspec中使用多线程:
context 'when multiple api calls made at same time' do
it 'sign_in successfully' do
request.env["devise.mapping"] = Devise.mappings[:user]
threads = []
10.times do
threads << Thread.new do
post :cr
在更新HAML (从4.0.0到4.0.1)之后,我在我的Devise helper方法上得到了一个错误。这可能会触发错误,不确定。
像user_signed_in?这样的巧妙的帮助器方法是可以工作的(虽然我的视图中没有),但是current_user方法却不能工作。在current_user.name.blank?过程中出现的这个错误是undefined method name for nil。
这是我的应用程序控制器:
class ApplicationController < ActionController::Base
before_filter :authenticate_
我只想让那些创建了一个对象(例如注册表)的人看到一些东西=,但是很难用Devise来定义一切
代码如下:
<% if user_signed_in? && ***"current_user = registry the user created?"?(struggling with the second part)*** %>
提前感谢
附注:我正在使用cancan,但这对我想要显示页面的显示页面没有帮助。
我完全糊涂了。我正在使用devise进行用户身份验证。如何适当地设置单独的user_profile.html.erb和user_profile_update.html.erb页面,同时保持devise/registrations#edit来管理用户的密码。当前用户配置文件视图正确呈现。然而,user_profile_update不会保存。我得到了错误:没有路由匹配补丁"/user/1“。列出这些路线(两次!)当我跑耙路的时候。但是,虽然put和修补程序路由在那里,但是没有对它们的path语句。
PATCH /users/:id(.:format) users#update
P
我遇到了一个非常令人困惑的问题,在Devise中,我可以成功登录,但之后似乎立即被注销。在sessions#create操作中设置一个断点,我可以看到current_user设置得很准确,但是,一旦sessions#create重定向到另一个控制器,current_user就为空。是什么导致了这种行为?
sessions_controller:
class SessionsController < Devise::SessionsController
def create
respond_to do |format|
format.html do
在我的项目中,我使用了devise,我希望创建自定义的sign_in。我决定在SessionsController中重写创建操作。现在,我的SessionsController看起来是这样的:
class SessionsController < Devise::SessionsController
def create
user_signed_in? # -> gives true if correct email and password
if !current_user.new_one? # -> I have access to current_u
我正在使用Rails3和Devise进行身份验证。当我尝试更新我的current_user时,抛出一个异常,声明:
Couldn't find User with id=edit
app/controllers/users_controller.rb:49:in `update'
下面是UsersController中的update和edit:
#UsersController.rb
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update_at
我有一个定制的会话控制器。我需要在注销时注册用户,为此,我需要current_user助手方法。
include Devise::Controllers::Helpers
class Api::UsersController < Devise::SessionsController
def create
super
p current_user # Object user - OK!
end
def destroy
super
puts current_user # nil - I need this
end
end
如何获取