2011-08-12 9 views
1

私は、次の関連付けを持っている:新チェックインを作成する場合はRailsの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 %> 

毎日、各出口はに一度にチェックインする必要があります。 2つのページを取得しようとしている

イム:

  1. 一つは、が今日にチェックインされていないすべてのアウトレットが表示されます。
  2. にはがあるすべてのアウトレットが表示されます。私はおそらく何ができることを考えていた2ページ目の

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

しかし、私は、これはそれを行うための最善の方法である確信していませんか?それがうまくいくかどうか? チェックアウトされていないアウトレットをどのように表示するかについての手掛かりはありません。アウトレットリストを取得する方法がわからないため、チェックインが今日作成されているかどうかを確認してください。

ご協力いただければ幸いです。

UPDATE:

私は、チェックインが各コンセントのために作成され、その結果、日常それを設定する検討していました。しかし、フィールドのうちの1つ(つまり、取得された[ブール値である可能性があります])がチェックされていない可能性があります。チェックインが行われると、チェックボックスにチェックマークを付けることができます。

しかし、これは不必要なレコードをたくさん作成するという欠点があります。

答えて

0

私は実際にこれを行うの偉大なRailsの道があるとわからないんだけど、ここで私の最高の試みです:だから最初に私たちはすべての可能なコンセントのすべてのIDをつかむ

# 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 

。次に、今日チェックインされたアウトレットを検索します。 Procトリックを使用して、両方のクエリでidsの配列を取得します。次に、両方の配列でdifference演算子を使用して、not_checked_inという新しい配列を返します。この配列には、今日チェックインされていないすべてのidsが含まれます。

関連する問題