如何在ActiveRecord中設置默認值?我從Pratik看到一篇帖子,描述了一個丑陋,復雜的代碼塊:http : //m.onkey.org/2007/7/24/how-to-set-default-values-in-your-modelclass Item < ActiveRecord::Base def initialize_with_defaults(attrs = nil, &block) initialize_without_defaults(attrs) do setter = lambda { |key, value| self.send("#{key.to_s}=", value) unless !attrs.nil? && attrs.keys.map(&:to_s).include?(key.to_s) } setter.call('scheduler_type', 'hotseat') yield self if block_given? end end alias_method_chain :initialize, :defaultsend我看過以下示例: def initialize super self.status = ACTIVE unless self.status end和 def after_initialize return unless new_record? self.status = ACTIVE end我也看到人們在遷移中使用了它,但是我寧愿看到它在模型代碼中定義。有沒有一種規范的方法可以為ActiveRecord模型中的字段設置默認值?
3 回答

qq_遁去的一_1
TA貢獻1725條經驗 獲得超8個贊
我們通過遷移(通過:default
在每個列定義上指定選項)將默認值放入數據庫中,然后讓Active Record使用這些值來設置每個屬性的默認值。
恕我直言,這種方法符合AR的原則:約定優于配置,DRY,表定義驅動模型,而不是相反。
請注意,默認值仍在應用程序(Ruby)代碼中,盡管不在模型中,但在遷移中。
- 3 回答
- 0 關注
- 714 瀏覽
添加回答
舉報
0/150
提交
取消