【发布时间】:2010-12-30 04:15:30
【问题描述】:
我试图解释一些相当复杂的事情。也许说起来比做起来更复杂。我有“事件”。这些事件属于“场地”。所以场地模型中have_many事件。
但事件很复杂,并且有范围可以确定事件是过去、现在还是未来。获得正确事件(仅限未来或现在)的范围是:
scope :not_over_or_in_progress, lambda { where("start_date < ? AND end_date > ? OR end_date IS NULL AND start_date > ? OR end_date IS NOT NULL AND start_date > ? OR start_date = ? OR end_date = ?", Date.today, Date.today, Date.today, Date.today, Date.today, Date.today) }
scope :valid, (not_over_or_in_progress.active).order("start_date ASC")
不是很漂亮,但工作正常。现在,当我展示场地时,我可以通过以下方式获取相关事件:
<% @venue.events.each do |event| %>
<li><%= event.title %> - (<%= event.event_status? %>)</li>
<% end %>
我得到所有事件,无论是过去、现在还是未来。它不是返回@events.valid,而是@events.all(全部)。 我想通过我的助手(event_status?)过滤我的范围(有效)的关联事件。这可能吗?
我得到了一些帮助来确定活动是否结束。那是什么event_status?是为了。也许有帮助
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 named-scope