0
在我的Ruby模型中,我想對我的Recipe
上的某些屬性應用默認值。所以我增加了一個before_save
回調應用它:這是我的食譜型號:類對象上的指針
class Recipe < ActiveRecord::Base
before_save :set_default_time
# other stuff
private
# set default time on t_baking, t_cooling, t_cooking, t_rest if not already set
def set_default_time
zero_time = Time.new 2000, 1 ,1,0,0,0
self.t_baking = zero_time unless self.t_baking.present?
self.t_cooling = zero_time unless self.t_cooling.present?
self.t_cooking = zero_time unless self.t_cooking.present?
self.t_rest = zero_time unless self.t_rest.present?
end
end
這是相當的工作,但我想因式分解這樣的:
class Recipe < ActiveRecord::Base
before_save :set_default_time
# other stuff
private
# set default time on t_baking, t_cooling, t_cooking, t_rest if not already set
def set_default_time
zero_time = Time.new 2000, 1 ,1,0,0,0
[self.t_baking, self.t_cooling, self.t_cooking, self.t_rest].each{ |t_time|
t_time = zero_time unless t_time.present?
}
end
end
但它不工作。我怎樣才能循環對我的對象propertie「指針」?
非常感謝你,它完美的作品! – RousseauAlexandre
不錯,一個小竅門是你可以跳過將方法名稱轉換爲符號,'.send'對字符串完美地工作。 – max
是真實的,但據我所知,使用符號效率更高一些。問題是,如果你在應用程序的不同位置使用了符號':foobar',它們具有相同的'object_id',這對於字符串來說不是這樣(雙重內存分配) – djaszczurowski