2011-08-12 40 views
1

我有以下關聯:導軌3 - 儀表盤監測/分析問題

Outlet => has_many :problems 
User => has_many :problems 
Checkin => belongs_to :outlet, belongs_to :user 

當創建新籤中,USER_ID從當前用戶的ID自動設置,並且出口被選擇從下拉框(它使用outlet_id):

<%= f.collection_select :outlet_id, Outlet.all, :id, :name %> 

每一天,每個出口需要被在給檢查一次。

林試圖讓兩頁:

  1. 之一來顯示所有尚未簽入今天的奧特萊斯。
  2. 一個顯示已有今天簽入的所有出口。

對於第二個頁面我想我可能做:

Checkin.where('created_at = Date.today') 

但我不相信這是做到這一點的最好方法是什麼?或者即使它會工作? 我不知道如何顯示尚未檢入的出口 - 因爲我不知道如何獲得出口清單,並檢查每個入口是否今天已簽入。

任何幫助將不勝感激。

UPDATE:

我正考慮它,以便每天爲每個出口創造了一個簽入。但是其中一個字段(即:[可能是布爾值])可能未被選中。然後當簽入時,它可以勾選複選框。

但是,這有一個不足之處,就是無法成功創建大量記錄。

回答

0

我真的不知道有這樣一個偉大的Rails的方式,但這裏是我最好的嘗試:

# All outlet ids into an array 
outlets = Outlets.all 
outlet_ids = outlets.map(&:id) 
# All the outlet ids of the checkins 
checked_in = Checkins.where('created_at = Date.today') 
checked_in_outlet_ids = checked_in.map(&:outlet_id) 
# All outlet ids not in checkins 
not_checked_in = outlet_ids - checked_in_outlet_ids 

所以首先我們抓住所有可能的網點所有的ID。然後我們查詢以查找今天檢查的商店。我們使用Proc技巧在兩個查詢中獲得一個只包含id的數組。然後,我們在兩個數組上使用差分運算符來返回一個名爲not_checked_in的新數組。該數組將包含今天未檢查的所有ID。