我有一个Staff模型,它有很多staff_orders
class Staff < Ressource
has_many :staff_orders
staff_orders包含from_date和to_date。 在此期间,工作人员被占用。
我想创建一个工作人员下拉列表, 在每个staff_member后面显示日期, 当他被占领时: “Ralph Allen(11月1日 - 11月2日,11月4日 - 11月5日)”
在这种情况下,热切的加载效果非常好。我需要使用LEFT JOIN, 因为我想列出所有工作人员,无论天气如何,他们都被工作人员占用。
@staff_collection = Staff.joins("LEFT JOIN staff_orders ON
staffs.id=staff_orders.staff_id").
collect{ |x| [x.long_name, x.id] }
但现在是棘手的部分。现在我只想在工作人员姓名后面添加一段特定时间跨度(例如本周)的被占用信息。 例如: “拉尔夫艾伦(11月4日 - 11月5日)”
@staff_collection = Staff.joins("LEFT JOIN staff_orders ON
ressources.id=staff_orders.staff_id").
collect{ |x| [x.long_name_occupied(@from_date,@to_date), x.id] }
我通过调用名称方法并将过滤日期作为参数来完成此操作。 现在它不再执行急切加载。 有什么想法吗?
答案 0 :(得分:0)
似乎您可以使用原始的select语句并在其上抛出where子句,该子句仅返回开始/停止日期为&lt; = @to_date的时间。