Bagaimana saya bisa menetapkan nilai default di ActiveRecord?
Saya melihat posting dari Pratik yang menggambarkan potongan kode yang jelek dan rumit: http://m.onkey.org/2007/7/24/how-to-set-default-values-in-your-model
class 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, :defaults
end
Saya telah melihat contoh-contoh berikut di Google:
def initialize
super
self.status = ACTIVE unless self.status
end
dan
def after_initialize
return unless new_record?
self.status = ACTIVE
end
Saya juga melihat orang memasukkannya ke dalam migrasi, tetapi saya lebih suka melihatnya didefinisikan dalam kode model.
Apakah ada cara kanonik untuk menetapkan nilai default untuk bidang dalam model ActiveRecord?