0

我有一个 Staff 模型,其中有很多 staff_orders

class Staff < Ressource
  has_many :staff_orders

staff_orders 包含一个 from_date 和一个 to_date。在此期间,工作人员被占用。

我想创建一个工作人员的下拉列表,在每个工作人员后面显示日期,当他被占用时: “拉尔夫艾伦(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] }  

我通过使用过滤日期作为参数调用 name 方法来做到这一点。现在它不再执行急切加载。任何想法?

4

1 回答 1

0

似乎您可以使用原始选择语句并在其上抛出一个 where 子句,该子句仅返回开始/停止日期为 <= @to_date 的时间。


于 2012-11-04T01:40:20.913 回答