複数のテーブルからデータをプルする方法を理解し、それを理解しようとしています。
events
、、テーブルがoccurrences
あります。venues
これまでのモデル/関連付けは次のとおりです。
models / event.rb:
class Event < ActiveRecord::Base
has_many :occurences, :dependent => :destroy
belongs_to :price
belongs_to :venue
validates_presence_of :venue
end
モデル/venue.rb:
class Venue < ActiveRecord::Base
has_many :events, :dependent => :destroy
end
models /occurence.rb:
class Occurence < ActiveRecord::Base
belongs_to :event
scope :today, lambda { where("occurence.datetime_start <= ? AND datetime_end >= ?", Time.now.end_of_day, Time.now) }
scope :this_week, lambda { where("occurence.datetime_start <= ? AND datetime_end <= ?", Time.now.end_of_day, Time.now.at_end_of_week) }
scope :next_week, lambda { where("occurence.datetime_start > ? AND datetime_end < ?", Time.now.at_end_of_week, Time.now.at_end_of_week + 1.weeks) }
scope :this_month, lambda { where("occurence.datetime_start <= ? AND datetime_end >= ?", Time.now.end_of_day, Time.now.at_end_of_month) }
scope :next_month, lambda { where("occurence.datetime_start >= ? AND datetime_end <= ?", Time.now.at_beginning_of_month + 1.months, Time.now.at_end_of_month + 1.months) }
end
view / events / index.html.erbに表示したいのは、今日発生しているすべてのイベントの表であり、次のようなことをしたいと思います。
<% @events.today.each do |event| %>
.today
スコープに一致するすべてのイベントを表示します。
スコープをevent
モデルに移動してみましたが無駄になりました。スコープをイベントモデルに移動する必要がありますか?これまでのところ、検索の結果、「スコープを使用してActiveRecordの複数のDateTime範囲内の結果を返す」と「 Rails3.0の複数のスコープ」にたどり着きましたが、実際には何も作成できません。
誰かが私を正しい方向に向けることができますか?イベントモデルに新しい関数を作成する必要がありますか?