小编Col*_*ers的帖子

Rails模型的动态方法

我意识到这不一定是最聪明的方法,但现在我的好奇心是活跃的,我很好奇如何做到这一点.

我在Rails项目中有一个模型.我们称之为Deal.根据ActiveRecord以及所有那些很酷的东西,数据库中定义的列如UPDATED_AT和那些成为Deal的方法:deal.updated_at => '04/19/1966 3:15 am'

假设我想要的方法告诉我一周中的某一天,而不是整个日期和时间.我意识到DateTime类上有方法,所以我可以这样做

  deal.updated_at.day_of_week => 'Monday' (*)
Run Code Online (Sandbox Code Playgroud)

但如果我只是想要怎么办

  deal.updated_day => 'Monday'
Run Code Online (Sandbox Code Playgroud)

我可以在deal.rb中写

  def update_day
    self.updated_at.day_of_week
  end
Run Code Online (Sandbox Code Playgroud)

得到它了.

但是,如果我希望它始终具有可用于添加到模型的任何日期列的方法,该怎么办?

我在那里看到了define_method(StackOverflow上有一些).所以我明白了.但我想在ActiveRecord发挥其魔力之后立即调用它,对吗?因此,如果我的交易模型有updated_at,created_at,provided_at和lawsuit_at,我会希望每个模型都有匹配的方法.更重要的是,如果另一位开发人员来了并添加了一个名为scammed_at的列,我希望scammed_day与scammed_at方法一起创建.

我该怎么办?

谢谢.

(*)呃,或类似的东西,我总是看起来那个叫.

activerecord ruby-on-rails

6
推荐指数
1
解决办法
2992
查看次数

标签 统计

activerecord ×1

ruby-on-rails ×1