Сделайте что-то вроде этого:
@published_events = Event.select("events.*, dates.date AS date_of_event")
.joins(:dates) # you join dates table to sort the events by date
.where(:published => true) # here you take only published events
.order("dates.date ASC") # here you order them
В ваших представлениях вы сделаете что-то вроде
@published_events.each do |event|
<p><%= event.id %></p>
<p><%= event.name %></p>
<p><%= event.date_of_event %></p>
end
Внимание -> Вы не указали точное имя своих столбцов, поэтому яЯ предполагаю, что у вашего события есть имя, или в вашей таблице дат есть дата вызова столбца.
Надеюсь, это полезно!
Редактировать: Если вы хотите сгруппировать их по дате, послевы извлекаете их из базы данных (это очень важно), вы действительно можете использовать group_by
( group by находится в Enumerable / group_by ), как это
@published_events.all.group_by(&:date_of_event)
Если вы это сделаетевот так у вас получится хеш, где каждый ключ является датой, а соответствующее ему значение - массив событий