Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 设计和当前用户_Ruby On Rails_Devise_Declarative Authorization - Fatal编程技术网

Ruby on rails 设计和当前用户

Ruby on rails 设计和当前用户,ruby-on-rails,devise,declarative-authorization,Ruby On Rails,Devise,Declarative Authorization,我有一个Rails 3应用程序,我正试图实现Desive和declarative_授权。 声明性_授权的一个重要部分是在用户模型中存在一个函数“role_symbols”。 由于我实现角色的方式,我在用户模型中实现了一个实例方法来跟踪一个值(我们称之为foo): 然后我们将在role_symbols方法中使用foo的值来限制有效角色,可能如下所示: def role_symbols roles.where("foo = ?", @foo).name.underscore.to_sym end

我有一个Rails 3应用程序,我正试图实现Desive和declarative_授权。 声明性_授权的一个重要部分是在用户模型中存在一个函数“role_symbols”。 由于我实现角色的方式,我在用户模型中实现了一个实例方法来跟踪一个值(我们称之为foo):

然后我们将在role_symbols方法中使用foo的值来限制有效角色,可能如下所示:

def role_symbols
  roles.where("foo = ?", @foo).name.underscore.to_sym
end
问题是,当我尝试为控制器中的当前_用户设置foo值时,该值不会保持不变,例如:

current_user.foo = 99
成功,但当我在另一个视图(或控制器)中检查该值时,current_user.foo的值为nil

当前的用户对象不只是会话中持久化的用户对象吗?
如果是,在当前用户对象内设置实例值时是否有一些锁定?

幸运地在这里找到了答案:

current_user.foo = 99