ठीक है, तो यह सौदा है। मेरे पास दो टेबल और एक जॉइन टेबल है क्योंकि यह कई से अधिक रिश्ते हैं। मेरे पास एक ऑर्डर है और ऑर्डर में कई उत्पाद हो सकते हैं। स्पष्ट रूप से यह दूसरी तरफ जाता है क्योंकि उत्पाद कई ऑर्डर पर हो सकते हैं। मैं निम्नलिखित वर्गों मिल गया है:रेल 3 है_मनी: नामकरण समस्या
class Order < ActiveRecord::Base
has_many :orders_products
has_many :products, :through => :orders_products
end
class OrderProduct < ActiveRecord::Base
belongs_to :order
belongs_to :product
end
class Product < ActiveRecord::Base
has_many :orders_products
has_many :orders, :through => :orders_products
end
मैं प्रदर्शित करने के लिए एक पृष्ठ मिल रहा है और मैं सामान में प्रवेश कर सकती हूं और मैं हो रही है जब मैं @order.products
के माध्यम से बचाया आदेश पर उत्पादों के साथ बातचीत करने के लिए जाना निम्न त्रुटि:
SQLite3::SQLException: no such table: order_products: SELECT "products".* FROM "products" INNER JOIN "order_products" ON "products".id = "order_products".product_id WHERE (("order_products".order_id = 1))
में शामिल होने अपनी तालिका orders_products
नाम पर है, लेकिन जैसा कि आप देख सकते हैं यह order_products
के माध्यम से शामिल होने के लिए कोशिश कर रहा है। रेल नामकरण सम्मेलनों का मेरा सीमित ज्ञान मुझे बताता है कि orders_products
इसे नाम देने का सही तरीका है, और फिर मेरे मॉडल को OrderProduct
के रूप में नाम दें। मैं वास्तव में इस पर एक दीवार के खिलाफ अपने सिर तेज़ कर रहा हूँ।
संपादित करें: मुझे लगता है कि यह मेरे आदेश को सहेजने के बावजूद और मैंने कई चेकबॉक्स चयनित किए हैं, इसने orders_products
तालिका में किसी भी मूल्य को सहेज नहीं लिया है, संभवत: उसी कारण से यह अब त्रुटि हो रहा है।
उचित 'has_many: through' एसोसिएशन के उदाहरण के लिए [इस विषय के लिए मार्गदर्शिका] (http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association) देखें। –
आह देखें, मैंने सोचा था कि habtm बहिष्कृत किया गया था। – MattC
हालांकि ऐसा लगता है कि मेरी समस्या ठीक हो गई है, इसलिए आपको एक सितारा मिल गया है। इसके अलावा, एक स्वीकार्य उत्तर के लिए 5 अंक: डी – MattC