在模型中调用方法

时间:2016-05-18 01:07:54

标签: ruby-on-rails ruby

我试图从定义它的模型内部触发一个方法。但是当我尝试启动服务器时,我得到了一个“未定义的方法`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

1 个答案:

答案 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。您可以在任何地方添加受保护的关键字,它不会对类方法产生任何影响。