मैं ActiveRecord में डिफ़ॉल्ट मान कैसे सेट कर सकता हूं?
मैं प्रतीक की एक पोस्ट देखता हूं जिसमें कोड का एक बदसूरत, जटिल हिस्सा बताया गया है: 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
मैंने निम्नलिखित उदाहरणों को गुगली करते हुए देखा है:
def initialize
super
self.status = ACTIVE unless self.status
end
तथा
def after_initialize
return unless new_record?
self.status = ACTIVE
end
मैंने यह भी देखा है कि लोग इसे अपने माइग्रेशन में रखते हैं, लेकिन मैं इसे मॉडल कोड में परिभाषित करता हूँ।
ActiveRecord मॉडल में फ़ील्ड के लिए डिफ़ॉल्ट मान सेट करने के लिए एक विहित तरीका है?