我试图从定义它的模型内部触发一个方法。但是当我尝试启动服务器时,我得到了一个“未定义的方法`completed_mission_names'”。任何人都可以帮我找到我做错的事吗?
class MenteeProfile < ActiveRecord::Base
# Update trackable attributes with succeeded missions
MenteeProfile.completed_mission_names
protected
def last_completed_mission_action
end
def self.completed_mission_names
end
end
答案 0 :(得分:2)
简化为最大值,您正尝试这样做:
class A
A.foo
def self.foo
puts 'Calling foo!'
end
end
这不起作用,因为在尝试调用方法时未定义方法foo
。您必须先定义它,然后才能调用它。像这样:
class B
def self.foo
puts 'Calling foo!'
end
B.foo
end
您也可以在类定义中调用foo
而不是B.foo
。您可以在任何地方添加受保护的关键字,它不会对类方法产生任何影响。