माइग्रेशन के माध्यम से सीधे उत्पाद मॉडल में विशेषताओं को जोड़ने का सबसे आसान तरीका होगा। सजावट के उपयोग के माध्यम से मान्यताओं को जोड़ा जा सकता है, मॉडल को ओवरराइड करने के लिए स्प्री के भीतर पसंदीदा पैटर्न।
# in app/models/product_decorator.rb
Product.class_eval do
validates :some_field, :presence => true
end
एक और विकल्प आपके विस्तारित फ़ील्ड के लिए द्वितीयक मॉडल बनाना होगा। शायद उत्पाद एक्सटेंशन
# in app/models/product_extension.rb
class ProductExtension < ActiveRecord::Base
belongs_to :product
validates :some_field, :presence => true
end
# in app/models/product_decorator.rb
Product.class_eval do
has_one :product_extension
accepts_nested_attributes_for :product_extension
delegate :some_field, :to => :product_extension
end
फिर आपके उत्पाद निर्माण फ़ॉर्म में आप इन फ़ील्ड को फ़ील्ड_for के साथ आपूर्ति कर सकते हैं। मुझे लगता है कि इसके साथ एक चेतावनी विस्तार से पहले उत्पादित उत्पाद मॉडल बनाने की आवश्यकता होगी। उत्पाद नियंत्रकों में कुछ अतिरिक्त तर्क के साथ आप संभवतः कार्रवाई कर सकते हैं।