gpt4 book ai didi

ruby-on-rails - Rails 模型上的动态方法

转载 作者:行者123 更新时间:2023-12-03 17:34:55 24 4
gpt4 key购买 nike

我意识到这不一定是最聪明的方法,但现在我的好奇心很活跃,我很好奇 怎么样去做吧。

我在 Rails 项目中有一个模型。我们将其称为交易。每个 ActiveRecord 和所有很酷的东西都有在数据库中定义的列,如 UPDATED_AT 并且这些列成为 Deal 上的方法: deal.updated_at => '04/19/1966 3:15am'

假设我想改用告诉我星期几而不是整个日期和时间的方法。我意识到 DateTime 类上有一些方法,所以我可以做

  deal.updated_at.day_of_week => 'Monday' (*)

但如果我只是想要
  deal.updated_day => 'Monday'

我可以写在 deal.rb
  def update_day
self.updated_at.day_of_week
end

知道了。

但是如果我想要它 怎么办?永远 有可用的方法 任何 添加到模型中的日期列?

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

我该怎么做?

谢谢。

(*) 呃,或者类似的,我总是看那个电话。

最佳答案

我想像下面这样的东西应该可以解决问题。在您的模型中:

# looping through all model's columns
self.columns.each do |column|
#if column's name ends with "_at"
if column.name =~ /_at$/
#create method like "udpated_day"
define_method "#{column.name[0..-4]}_day" do
self.send(column.name).day_of_week
end
end
end

但这意味着每一列都有一个有效的 day_of_week方法...

好吧,你明白我的想法了。不要犹豫,询问详情

关于ruby-on-rails - Rails 模型上的动态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6179148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com