Wie kann ich einen Standardwert in ActiveRecord festlegen?
Ich sehe einen Beitrag von Pratik, der ein hässliches, kompliziertes Stückchen Code 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
Beim Herumgoogeln habe ich die folgenden Beispiele gesehen:
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 schon Leute gesehen, die es in ihre Migration eingebaut haben, aber ich würde es lieber im Modellcode definiert sehen.
Gibt es einen kanonischen Weg, um Standardwert für Felder in ActiveRecord-Modell festlegen?