तो बुनियादी तौर पर मैं हो, तो कुछ सामान्य दृष्टिकोण खुद संघ प्रकार को परिभाषित करने के लिए जानना चाहते हैं। कुछ विवरण:कस्टम रेल has_many संघ (पृष्ठ सरणी के माध्यम से)
मेरे पास एक मॉडल conversations
है जिसमें एक पीजी सरणी कॉलम user_ids
है। select conversations.* from conversations where USER_ID = ANY(conversations.user_ids)
finder_sql
के बाद से और यह के दोस्तों अब पदावनत कर रहे हैं, मैं सच में पता है कि यह छद्म has_many संघ लागू करने के लिए सबसे अच्छा तरीका होगा चाहते हैं: तो, उपयोगकर्ता बातचीत को पुनः प्राप्त करने मैं चलाने के लिए की आवश्यकता है?
def conversations
Conversation.where("#{id} = ANY (conversations.users)")
end
तो बुनियादी तौर पर मैं अपने खुद के
ActiveRecord::Associations::CollectionAssociation
को लागू करने की सोच रहा हूँ और पता करने के लिए अगर वहाँ कुछ अच्छी संदर्भ कर रहे हैं चाहते हैं या यदि आप सलाह सकता है जहां शुरू करने के लिए
:
वर्तमान में मैं सिर्फ तरह तरीकों का उपयोग
Conversation.user.select{ |conversation| conversation.user_ids.include?(params[:id])
कोन:
क्या आपके पास स्कीमा पर कोई नियंत्रण है? मैं पूछता हूं क्योंकि विदेशी कुंजियों को पकड़ने के लिए एक सरणी का उपयोग करना बुरा अभ्यास है, न केवल उन परेशानियों के कारण जो आपको अब पैदा कर रहा है। _only_ बार आपको किसी सरणी का उपयोग करने पर विचार करना चाहिए, जब इसे डेटाबेस द्वारा हमेशा एक अविभाज्य चीज़ के रूप में माना जा सकता है जिसका अर्थ नहीं है। –
सही, मैंने शैक्षणिक उद्देश्यों के लिए इस दृष्टिकोण के साथ जाने का फैसला किया। इसके अलावा, मैं सरणी प्रदर्शन के साथ बिल्कुल आश्चर्यचकित हूं। एक और चीज जो मुझे विश्वास दिलाती थी वह यह थी: http://blog.2ndquadrant.com/postgresql-9-3-development-array-element-foreign-keys/, जिसने मुझे लगता है कि यह –
के बाद इतना बुरा विचार नहीं है आप ARRAY के साथ जाने का फैसला कर सकते हैं शायद आप SQL व्यू के साथ भी जा सकते हैं? https://github.com/thoughtbot/scenic और मूल रूप से एक और तालिका बनाएं जो आपके सरणी को कुछ इस तरह से denormalizes: (conversation_id, user_id) (कई-कई) ताकि आप सामान्य रूप से कई संबंधों का उपयोग कर सकें। –