私はリーグとイベントでスポーツアプリケーションを作っています。イベントにはleague_id
、リーグにはname
、country_name
が含まれています。どのようにすれば、今日、リーグの名前と国とともに、開始日のすべてのイベントを取得することができますか?特定のレコードをフィルタリングするwhere句と結合して、有効レコードをrails
私が試した:
League.joins(:events).where(events: {event_start: Time.zone.now..Time.zone.now.end_of_day})
をしかし、これは今日のイベントを持っているすべてのリーグを返し、私は、その特定のリーグからのイベントにアクセスしようとすると、すべてのイベントが含まれているものだけでなく、されています今日はチェックされている。
をend_of_dayするbeginning_of_dayして検索する必要があると思います!しかし問題は、今私が望む階層構造で反復することができないということです(これは、イベントよりもリーグを繰り返します)。これを解決するために次のように書きました: 'events = Event.includes(:league).where(event_start :Time.zone.now..Time.zone.now.end_of_day) events_hash = {} events.each do | event | \t events_hash [event.league.group] || = {} \t events_hash [event.league.group] [event.league.name] || = [] \t events_hash [event.league.group] [イベント。 league.name] <<イベント 終了 events_hash' これを行うには、より明確なエレガントな方法はありますか? (フォーマットは申し訳ありません) – Reinier