我正在使用Rails 3和ActiveRecord,我不能让它生成我想要的查询而不插入几乎普通的sql.
我只是想执行这个SQL查询(实际上查询有点复杂,但实际上这部分我无法正确).
SELECT DISTINCT users.*,possible_dates.* FROM users LEFT OUTER JOIN possible_dates ON possible_dates.user_id = users.id AND possible_dates.event_id = MY_EVENT_ID;
我设法使用
User.includes(:possible_dates) .joins("LEFT OUTER JOIN possible_dates ON possible_dates.user_id = users.id AND possible_dates.event_id = #{ActiveRecord::Base.sanitize(self.id)}" ) .uniq
但我觉得我遗漏了一些东西,只需使用ActiveRecord查询方法添加左连接的AND条件.
我也尝试过这样的事情
User.includes(:possible_dates) .where('possible_dates.event_id' => self.id) .uniq
但是这会产生(如预期的那样)一个在末尾带有WHERE子句的查询,而不是我想要的AND子句.
顺便说一下,上面两个片段中的self是我的Event类的一个实例.
谢谢您的帮助.