2012-09-18 18 views
5

अरेल 3.0.2 दो वर्गों प्रकार में शामिल होने के निर्दिष्ट करने के लिए प्रदान करता है: Arel::Nodes::InnerJoin और Arel::Nodes::OuterJoin और डिफ़ॉल्ट के रूप InnerJoin उपयोग करता है।कैसे छोड़ दिया करने के लिए अरेल साथ शामिल हो?

foo = Arel::Table.new('foo') 
bar = Arel::Table.new('bar') 

foo.join(bar, Arel::Nodes::InnerJoin) # inner 
foo.join(bar, Arel::Nodes::OuterJoin) # outer 

foo.join(bar, ???) # left 

यदि आप बाएं शामिल करना चाहते हैं तो आप दो तालिकाओं में कैसे शामिल हो सकते हैं?

+0

कहा जाता है शायद यह मदद कर सकते हैं: http://ruby.ryanbigg.com/post/1468788928/left-outer-join-with-arel –

उत्तर

7

उपयोग

foo.join(bar, Arel::Nodes::OuterJoin) # outer 

क्योंकि वाम शामिल हों = वाम बाहरी शामिल हों। बाहरी एक विकल्प है। here

0

यहां किसी भी व्यक्ति के लिए रेल मॉडल के साथ एक पूर्ण उदाहरण है जो देखना चाहता है। एक के लिए के माध्यम से:

मुझे कुछ घंटों लिया यह पता लगाने की तो मैंने सोचा कि मैं दुनिया

इसका मतलब यह है कि आप एक मॉडल RssFeed और एक अन्य बुलाया RssFeedUser जो एक has_many के लिए एक मॉडल में शामिल होने है कहा जाता है के साथ साझा करेंगे मॉडल User

RssFeed.find_by_sql(RssFeed.arel_table.join(RssFeedUser.arel_table,Arel::Nodes::OuterJoin).on(RssFeed.arel_table[:id].eq(RssFeedUser.arel_table[:rss_feed_id])).where(RssFeedUser.arel_table[:user_id].eq(nil)).project('rss_feeds.*')) 
संबंधित मुद्दे