Wie kann ich den Standardwert in ActiveRecord festlegen?
Ich sehe einen Beitrag von Pratik, der einen hässlichen, komplizierten Codeabschnitt beschreibt: 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
Ich habe die folgenden Beispiele gesehen, die herum gegoogelt haben:
def initialize
super
self.status = ACTIVE unless self.status
end
und
def after_initialize
return unless new_record?
self.status = ACTIVE
end
Ich habe auch Leute gesehen, die es in ihre Migration aufgenommen haben, aber ich würde es lieber im Modellcode definiert sehen.
Gibt es eine kanonische Möglichkeit, den Standardwert für Felder im ActiveRecord-Modell festzulegen?