我试图找出如何从多个表中提取数据,并使得它的意义。ActiveRecord关联和范围噢,我的
我有events
,occurrences
和venues
表。
下面是模型/协会至今:
型号/ 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
型号/ 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
我会LIK E在我看来/事件/ 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”,但我真的不能做任何事情出来。
任何人都可以指向正确的方向吗?我应该在我的事件模型中创建一个新功能吗?
我发现,经过进一步的测试,那上面范围返回多个相同的事件(每个事件有多少匹配的事件)。即使许多事件与范围匹配,我也希望事件只返回一次。如何才能做到这一点? 实施例:事件有很多出现整个月(说10)的所述@events = Event.all输出将产生该事件的10个条目。 –
你可以尝试链接一。选择(“独特的'events'。*”)的范围内的值。 –
你先生,是亲。奇迹般有效。 –