如何在rails控制台中使用新创建的方法

Mut*_*tor 1 ruby-on-rails ruby-on-rails-3

我在我的一个模型中创建了一个相当简单的新方法.但是,当我去rails控制台测试它时,我收到以下错误:

NoMethodError: undefined method 'get' for #<Class:0x3a5032fc>
Run Code Online (Sandbox Code Playgroud)

我保存了代码,关闭了rails控制台然后重新启动,但我仍然得到了NoMethod

class Race <ActiveRecord::Base
  def get(race_date,track_name,race_number)
    Race.where(:date =>race_date, :race_nbr => race_number, :track_id => (Track.where(:track_code => track_name)))
  end
end
Run Code Online (Sandbox Code Playgroud)

在控制台中,我输入以下内容:

Race.get("2011-12-04", "BEL", 1)
Run Code Online (Sandbox Code Playgroud)

产生了NoMethodError:undefined method 'get'.

任何想法将不胜感激.

luc*_*tte 7

您定义了Race类的实例方法.也许你会定义一个类方法,如:

def self.get(race_date, track_name, race_number)
    track = Track.where(:track_code => track_name)
    Race.where(:date => race_date, :race_nbr => race_number, :track_id => track)
end
Run Code Online (Sandbox Code Playgroud)

然后你可以使用Race.get.

  • 我会将`track`分成局部变量,只是为了缩短线条.但除此之外,还有很好的答案. (2认同)