我意識到這不一定是最聰明的方式來做到這一點,但現在我的好奇心是活躍的,我很好奇如何做到這一點。動態方法上的導軌模型
我在Rails項目中有一個模型。我們將其稱爲Deal。每ActiveRecord和所有那些很酷的東西有數據庫中定義的列像UPDATED_AT和那些成爲交易的方法:deal.updated_at => '04/19/1966 3:15 am'
說我想改爲有方法告訴我一週中的某一天,而不是整個日期和時間。我知道有方法對DateTime類,所以我可以做
deal.updated_at.day_of_week => 'Monday' (*)
但如果我只是想
deal.updated_day => 'Monday'
我可以在deal.rb
def update_day
self.updated_at.day_of_week
end
寫明白了。
但是如果我把它想ALWAYS有那天被添加到模型任何日期列的方法?
我看到了define_method那裏(一些在這裏StackOverflow)。所以我明白這一點。但是我想在ActiveRecord發揮它的魔力之後立即調用它,對嗎?所以如果我的交易模式有updated_at,created_at,offered_at和lawsuit_at我想每個匹配方法。更重要的是,如果另一位開發人員來到並添加了一個名爲scammed_at的列,我想要與scammed_at方法一起創建scammed_day。
我會怎麼做呢?
謝謝。
(*)呃,或者類似的東西,我總是看起來那個叫。
您可以在'if column.name =〜/ _at $ /'條件中包裝'define_method'調用。 – 2011-05-30 18:25:58
你肯定是正確的,更正補充,謝謝 – apneadiving 2011-05-30 18:48:16
所以,如果我只是在模型文件中添加它,我假定在我的其他方法def語句後,它會在數據庫定義列後加載? 這正是我想要的。 – 2011-05-30 18:54:33