current_user在用户模型中不起作用。我正在使用Devise

时间:2016-03-10 17:20:20

标签: ruby-on-rails ruby devise model

我正在学习Ruby on Rails并且很难在User模型中定义我当前的用户。

我的用户模型:

class User < ActiveRecord::Base
  devise :database_authenticatable, :confirmable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable

...

def downgrade
  self.role = :standard
  current_user.wikis.each { |wiki| wiki.make_public }
  save
end

当我在current_user上调用wiki时,我没有遇到方法错误。我认为devise提供了current_user方法。请帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

current_user是一种控制器方法,您的模型中可用。但是,我相信您希望在范围内引用User实例。假设wikis是User类中的关联或方法,请尝试这样做。

def downgrade
  self.role = :standard
  wikis.each { |wiki| wiki.make_public }
end

downgrade是User类的实例方法,这意味着必须在该类的实例上调用它。您的控制器中可能包含current_user.downgrade之类的代码,其中current_user是User的实例。

在实例方法中,“{1}}引用”当前“实例,例如self(在当前实例上调用self.wikis方法)。但是wikis通常可以省略。 selfwikis完全相同。

一个例外是属性分配,需要self.wikis

self