0
比方说,我有以下型号:Rails的LEFT OUTER JOIN
class Employee < ActiveRecord::Base
has_many :shifts
end
class Shift < ActiveRecord::Base
belongs_to :employee
end
在我的控制器我想要加载的所有员工,包括其在一定日期范围的变化。 但我也想包括那些没有在这个范围内变化的员工。
在我控制我的尝试:
@employees.joins("LEFT OUTER JOIN shifts ON employees.id = shifts.employee_id").where('shifts.starts_at BETWEEN ? and ?', weekBegin, weekEnd).to_json(:include => :shifts)
但是,这仍然只是在该日期范围内的变化返回雇员。我还希望在该日期范围内返回没有班次的员工。
这样的查询如何工作?
谢谢看起来不错。唯一的问题是它现在加载所有班次。不仅是日期范围内的所有人。 – Ben 2012-07-13 12:10:06
这很奇怪。你能检查结果中产生了什么SQL查询吗? – 2012-07-13 12:12:09
其实不止一个。第一个似乎是正确的: – Ben 2012-07-13 12:14:22