我正在学习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方法。请帮助,谢谢!
答案 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
通常可以省略。 self
与wikis
完全相同。
一个例外是属性分配,需要self.wikis
。
self