2009-06-16 13 views
7

मेरे पास एक उत्पाद मॉडल है जिसमें कई अनुभाग हैं, और एक सेक्शन कई उत्पादों से संबंधित हो सकता है।एकल टेबल विरासत से जुड़े एचएबीटीएम एसोसिएशन

अनुभाग मॉडल में फ़ीचर, मानक और विकल्प के उप-वर्ग हैं।

मेरे मॉडल हैं:

class Product < ActiveRecord::Base 
has_and_belongs_to_many :categories 
has_and_belongs_to_many :sections  
end 

class Section < ActiveRecord::Base 
has_and_belongs_to_many :products 
end 

class Feature < Section 
end 

class Standard < Section 
end 

class Option < Section 
end 

अपने उत्पादों नियंत्रक में मैं यह कर सकता:

@product.features.build 

@product.standards.build 

@product.options.build 
:

@product.sections.build 

मैं कुछ इस तरह की तरह उपवर्गों को पाने के लिए सक्षम होना चाहते हैं

लेकिन यह केवल "अपरिभाषित विधि" सुविधाओं "आदि के साथ त्रुटियों में है।

कृपया कोई मुझे बता सकता है कि यह कैसे करें?

उत्तर

0

उत्पाद में उन विधियों का कारण नहीं है क्योंकि उन्हें कभी परिभाषित नहीं किया गया था। आप सुविधाओं/मानकों/विकल्प तरीकों प्राप्त करने के लिए अपने उत्पादों को कक्षा में संबंधों को परिभाषित करने की जरूरत है

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

आप क्या रिश्तों को परिभाषित आप

11

दे रहा है मान लिया जाये कि आप एक has_and_belongs_to_many है में शामिल होने कि की बेहतर समझ दे देंगे "product_sections" नाम के साथ तालिका, आपको अपने प्रोडक्ट मॉडल में इन अतिरिक्त एसोसिएशन की आवश्यकता होगी:

class Product < ActiveRecord::Base 
has_and_belongs_to_many :sections 
has_and_belongs_to_many :features, association_foreign_key: 'section_id', join_table: 'products_sections' 
has_and_belongs_to_many :standards, association_foreign_key: 'section_id', join_table: 'products_sections' 
has_and_belongs_to_many :options, association_foreign_key: 'section_id', join_table: 'products_sections' 
end 
संबंधित मुद्दे