0

多くのstaff_ordersを持つStaffモデルがあります

class Staff < Ressource
  has_many :staff_orders

staff_orders には from_date と to_date が含まれています。この間、スタッフは常駐しています。

スタッフメンバーのドロップダウンリストを作成したいと思います.各staff_memberの後ろに、彼が占有されている日付が表示されます: 「ラルフ・アレン(11月1日-11月2日、11月4日-11月5日)」

この場合、熱心な読み込みは完全に機能します。天候に関係なく、staff_orders が占めているかどうかに関係なく、すべてのスタッフ メンバーを一覧表示したいので、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

元の select ステートメントを使用して、開始日/終了日が <= @to_date である時間のみを返す where 句をスローできるようです。


于 2012-11-04T01:40:20.913 に答える