Я пытаюсь объяснить что-то довольно сложное.Возможно, сложнее сказать, чем сделать.У меня есть «события».Эти события относятся к «местам проведения».Таким образом, события 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?для.Может быть, это поможет