рельсы 3 перебирают модель с диапазоном дат и днем_группы - PullRequest
1 голос
/ 07 ноября 2011

У меня есть модель под названием Dish, которая составляет :served_from и :served_until в день, например, спагетти болоньезе подается с понедельника 2011-10-31 до воскресенья 2011-11-06.

Вкл.на странице ресторана я хочу показать все блюда, доступные во время недели 44:

  • Понедельник: спагетти болоньезе
  • Вторник: спагетти болоньезе
  • ...

До сих пор я сохранял только :date в Dish и использовал следующий код для группировки всех блюд текущего рабочего дня по дням:

dishes = Dish.where(:date => (Date.commercial(Date.today.year, Date.today.cweek, 1))..(Date.commercial(Date.today.year, Date.today.cweek, 7)))
dishes.group_by(&:date).each do |date, dish|
  puts "Date: #{date}"
  puts "Dishes: #{dish.count}"
  dish.each do |dish|
    puts dish.name
  end
end

Я заменил :date на :served_from и :served_until для обработки блюд, которые подаются чаще, чем один день.Но как мне использовать Dish.where, чтобы найти все блюда между :served_from и :served_until и сгруппировать их по cweek.day?

Заранее спасибо

1 Ответ

0 голосов
/ 07 ноября 2011

Возможно при создании блюда добавить в базу данных более одной записи, например:

title: spaghetti bolognese
served_from: 2011-10-29
served_until: 2011-10-31

и добавить в базу данных не

{title: "spaghetti bolognese", served_from: "2011-10-29", served_from: "2011-10-31"}

, а

[{title: "spaghetti bolognese", date: "2011-10-29"}, {title: "spaghetti bolognese", date: "2011-10-30"},{title: "spaghetti bolognese", date: "2011-10-31"}]

Это не очень красивый способ, но это решение.

...