दिलचस्प पोस्ट
जब मैं गैस में "नींद" करता हूँ तो क्या होता है? (निष्पादन समय सीमा समाधान) jQuery: बाएं स्लाइड और दाएं स्लाइड करें jQuery स्वत: पूर्ण ट्रिगर बदलें ईवेंट स्ट्रिंग में शब्दों की गिनती क्रिया बार का रंग प्रोग्राम को एक से अधिक बार बदलें SQL सर्वर: कुछ दिनों के लिए कोई डेटा मौजूद नहीं है, तो किसी तिथि सीमा में सभी दिनों का चयन कैसे करें मैं कैसे WordPress में कुकीज़ सेट, प्राप्त और नष्ट कर सकता हूं? sed कमांड के साथ -i विकल्प मैक पर असफल हो रहा है, लेकिन लिनक्स पर काम करता है जावास्क्रिप्ट का उपयोग कर फॉर्म को स्वत: जमा करें क्या "एक मध्यवर्ती परिणाम कैश किया जा रहा है" मतलब है? XCode "DTAssetProviderService प्रारंभ नहीं कर सका .." त्रुटि, यह कैसे ठीक करें? कैसे malloc () आंतरिक रूप से लागू किया जाता है? कुशल चलती औसत फिल्टर के लिए प्रगति का उपयोग करना जावा हाशम की मेमोरी ओवरहेड ऐरेएलआईस्ट की तुलना में कोणीय 2: घटक में तीसरे पक्ष जे एस स्क्रिप्ट सहित

संघों के माध्यम से संबंधित है

निम्नलिखित संघों को देखते हुए, मुझे इस Question का संदर्भ देने की जरूरत है कि Choice मॉडल से Choice को जोड़ा गया है। मैं उपयोग करने का प्रयास कर रहा हूं belongs_to :question, through: :answer इस क्रिया को करने के लिए belongs_to :question, through: :answer

 class User has_many :questions has_many :choices end class Question belongs_to :user has_many :answers has_one :choice, :through => :answer end class Answer belongs_to :question end class Choice belongs_to :user belongs_to :answer belongs_to :question, :through => :answer validates_uniqueness_of :answer_id, :scope => [ :question_id, :user_id ] end 

मैं समझ रहा हूं

नामअनुरुपित निरंतर User::Choice

जब मैं current_user.choices करने की कोशिश करता हूं

यह ठीक काम करता है, अगर मैं इसमें शामिल नहीं होता

 belongs_to :question, :through => :answer 

लेकिन मैं इसका उपयोग करना चाहता हूं क्योंकि मैं validates_uniqueness_of करने में सक्षम होना चाहता हूं

मैं शायद कुछ सरल दिख रहा हूँ किसी भी सहायता की सराहना की जाएगी।

Solutions Collecting From Web of "संघों के माध्यम से संबंधित है"

एक संबद्ध संघ के पास कोई विकल्प नहीं हो सकता है। आप Choice पर question_id को कैशिंग कर रहे हैं और मेज पर एक अनूठी सूचकांक जोड़ रहे हैं (खासकर क्योंकि validates_uniqueness_of दौड़ परिस्थितियों में प्रवण है)।

यदि आप पागल हो गए हैं, तो Choice लिए एक कस्टम सत्यापन जोड़ें, जो यह पुष्टि करता है कि उत्तर का question_id मेल खाता है, लेकिन ऐसा लगता है कि अंतिम उपयोगकर्ता को ऐसे डेटा सबमिट करने का अवसर नहीं दिया जाना चाहिए, जो इस तरह के बेमेल पैदा कर सके।

आप प्रतिनिधि भी कर सकते हैं:

 class Company < ActiveRecord::Base has_many :employees has_many :dogs, :through => :employees end class Employee < ActiveRescord::Base belongs_to :company has_many :dogs end class Dog < ActiveRecord::Base belongs_to :employee delegate :company, :to => :employee, :allow_nil => true end 

बस अपने आप में has_one बजाय has_one उपयोग करें :though , इस तरह:

 class Choice belongs_to :user belongs_to :answer has_one :question, :through => :answer end 

असंबंधित, लेकिन मैं अपने डेटाबेस में एक उचित अद्वितीय बाधा का उपयोग करने के बजाय validates_uniqueness_of का उपयोग करने में संकोच करूंगा जब आप इसे रूबी में करते हैं तो आपके पास दौड़ की स्थिति होती है

आप has_one का उपयोग केवल has_one के स्थान पर कर सकते हैं:

 has_one :question, :through => :answer 

डेटाबेस कॉलम जोड़ने के बजाय मेरी आभासी विशेषता थी

 class Choice belongs_to :user belongs_to :answer # ------- Helpers ------- def question answer.question end # extra sugar def question_id answer.question_id end end 

यह दृष्टिकोण बहुत सरल है, लेकिन व्यापार के साथ आता है। डीबी से answer लोड करने के लिए रेल की आवश्यकता है, और उसके बाद question । यह बाद में आपके द्वारा आवश्यक संघों को लोड करने के लिए अनुकूलित किया जा सकता है (अर्थात c = Choice.first(include: {answer: :question}) ), हालांकि, अगर यह अनुकूलन आवश्यक है, तो स्टीफेंसेलिस का जवाब शायद एक बेहतर प्रदर्शन निर्णय है

कुछ विकल्पों के लिए समय और स्थान है, और मुझे लगता है कि प्रोटोटाइप के समय यह विकल्प बेहतर होता है। मैं इसे उत्पादन कोड के लिए उपयोग नहीं करेगा, जब तक कि मैं जानता न कि यह एक विलक्षण उपयोग केस के लिए था

ऐसा लगता है कि आप क्या चाहते हैं वह उपयोगकर्ता है जिसमें कई प्रश्न हैं
प्रश्न में कई उत्तर दिए गए हैं, जिनमें से एक उपयोगकर्ता की पसंद है।

क्या यह आप के बाद कर रहे हैं?

मैं इन पंक्तियों के साथ ऐसा कुछ मॉडल करता हूं:

 class User has_many :questions end class Question belongs_to :user has_many :answers has_one :choice, :class_name => "Answer" validates_inclusion_of :choice, :in => lambda { answers } end class Answer belongs_to :question end 

इसलिए आप ऐसा व्यवहार नहीं कर सकते हैं, जिसे आप चाहते हैं, लेकिन आप ऐसा कुछ कर सकते हैं जो ऐसा लगता है। आप Choice.first.question करने में सक्षम होना चाहते हैं। Choice.first.question

मैंने अतीत में क्या किया है ऐसा कुछ है

 class Choice belongs_to :user belongs_to :answer validates_uniqueness_of :answer_id, :scope => [ :question_id, :user_id ] ... def question answer.question end end 

इस तरह आप अब चॉइस पर सवाल कॉल कर सकते हैं

has_many :choices नाम का choices नाम के एक समूह बनाता है, choice नहीं है इसके बजाय current_user.choices का उपयोग करके देखें।

has_many जादू के बारे में जानकारी के लिए ActiveRecord :: Associations दस्तावेज़ देखें