sql - How would I do this JOIN in Rails? -
यहाँ मेरा एसक्यूएल कथन है:
SELECT * से 'message_users' LEFT JOIN 'messages` पर message_users.message_id = messages.id WHERE (message_users.user_id = 1 और message_users.hidden = 0) और message_users.last_read_at & gt; Messages.updated_at ORDER BY messages.updated_at DESC LIMIT 0, 20
मैं उचित रेल के साथ उस बंद कैसे खींचूँगा / शामिल / जो कुछ भी हो?
आप आम तौर पर कई तालिकाओं से सभी डेटा को रेल में एक मॉडल में लोड नहीं करते हैं। शामिल हो को शामिल करें से बदलकर अधिक सामान्य है, जो संबंधित मॉडल को प्रीलोड करेगा ताकि आप message.message_users को कॉल करते समय कैश को दबाएंगे। संदेश और संदेश_युजर्स के बीच कोई स्तंभ नाम संघर्ष नहीं है, किसी भी दर पर, यह आपके एसक्यूएल क्या कर रहा था डुप्लिकेट चाहिए।
यदि आप क्वेरी के बाद messages_users से डेटा की आवश्यकता नहीं है, आप चयन करें खंड निकाल सकते हैं।
Message.find (: सभी,: joins =>: Message_users,: select => "message_users। *, संदेश। *",: Conditions => ['message_users.user_id =? और message_users.hidden =? और message_users.last_read_at> messages.updated_at', 1,0]:: आदेश => "Messages.updated_at desc" ,: limit => 20)
शामिल हो और शामिल
Comments
Post a Comment