【发布时间】:2014-06-30 14:32:24
【问题描述】:
考虑以下几点:
class User < ActiveRecord::Base
has_many :events
end
class Event < ActiveRecord::Base
belongs_to :user #this user is the event owner
has_many :members
end
class Members < ActiveRecord::Base
belongs_to :user
belongs_to :event
end
现在,我需要列出current_user 为其所有者的所有成员。所以我想出了这个:
@members = Member.where event_id: current_user.events
产生以下查询:
SELECT "members".* FROM "members" WHERE "members"."event_id" IN (SELECT "events"."id" FROM "events" WHERE "events"."user_id" = 1)
这按预期工作,但使用子查询而不是JOIN。有谁知道编写相同查询的更好方法?
【问题讨论】:
标签: sql ruby-on-rails postgresql activerecord ruby-on-rails-4