【问题标题】:Define a class (instance)method in rails console在 Rails 控制台中定义一个类(实例)方法
【发布时间】:2023-04-08 10:51:02
【问题描述】:

有没有办法在控制台中为类实例定义方法?

例如

 def Model.old?
   self.created_at < Time.now - 35.years
 end

然后运行它

Model.find(1).old?

【问题讨论】:

  • 应该可以正常开课了。
  • 不确定你的意思。我想定义一个我正在测试的方法,而无需进入类、重新加载或(重要的是)丢失我一直在摆弄的一些数据。但我想定义该方法的行为,就好像它已经针对模型定义了一样。
  • 打开一个类不会重新加载该类,AFAIK。您正在尝试添加实例方法,而不是特定实例,我看不出您有任何不能这样做的原因。你是说使用普通的 Ruby 类打开不起作用?
  • 好吧,我刚才写的上面没有用....
  • 嗯,不,我认为如果有的话,那会添加一个类方法。你会想要class Model; def old?; (your code); end; end 或其他东西。例如,rubylearning.com/satishtalim/ruby_open_classes.html 或其他任何教程。

标签: ruby-on-rails ruby class methods


【解决方案1】:

根据您提供的代码,这应该是您想要的:

class Model
  def old?
    created_at < 35.years.ago
  end
end

你只需要将每一行一一输入到控制台中。

附: - 你的比较逻辑是倒退的,所以我把它反过来了。

【讨论】:

    猜你喜欢
    • 2016-06-29
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    相关资源
    最近更新 更多