मैं निम्नलिखित मॉडल:परिसर ActiveRecord के साथ शामिल हों और रेल 3
class User < ActiveRecord::Base
has_many :memberships
has_many :groups, :through => :memberships
end
class Group < ActiveRecord::Base
has_many :memberships
has_many :users, :through => :memberships
end
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :group
end
class Post < ActiveRecord::Base
belongs_to :group
end
मैं उन सभी पोस्ट को समूह जहां उपयोगकर्ता सदस्य है के हैं खोजने के लिए। मैं इस विधि के साथ यह बना दिया है:
@post = Post.joins(:group => {:memberships => :user}).where(:memberships => {:user_id => current_user.id})
लेकिन यह unefficient एसक्यूएल का उत्पादन:
SELECT posts.* FROM posts INNER JOIN memberships ON memberships.group_id = posts.group_id WHERE memberships.user_id = 1
मैं बिना यह कैसे कर सकते:
SELECT "posts".* FROM "posts" INNER JOIN "groups" ON "groups"."id" = "posts"."group_id" INNER JOIN "memberships" ON "memberships"."group_id" = "groups"."id" INNER JOIN "users" ON "users"."id" = "memberships"."user_id" WHERE "memberships"."user_id" = 1
मैं इस तरह एक प्रश्न बनाना चाहते कच्चे एसक्यूएल का उपयोग कर?
को संकलित करता है कैसे आप भी समूह तालिका से विशिष्ट स्तंभों का चयन करते हैं? –