【发布时间】:2012-10-13 16:46:09
【问题描述】:
我试图弄清楚如何从多个表中提取数据并理解它。
我有 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
models/venue.rb:
class Venue < ActiveRecord::Base
has_many :events, :dependent => :destroy
end
模型/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 型号,但无济于事。我应该将范围移动到事件模型吗?到目前为止,我的搜索导致我
"Using scope to return results within multiple DateTime ranges in ActiveRecord"
和
"Multiple scope in rails 3.0" 但我真的无法从中得到任何东西。
谁能指出我正确的方向?我应该在我的事件模型中创建一个新函数吗?
【问题讨论】:
标签: ruby-on-rails ruby activerecord associations scopes