Рассматривал способы реализации логики повторных событий. Я хотел бы показывать события на предстоящую неделю, в зависимости от их повторения.Обработка события повторения - Rails 4
Например, у меня есть 2 события, один раз еженедельно, а второй - два раза в неделю. На мой взгляд, на этой неделе я бы показал только одно событие, но на следующей неделе будет два показа.
До сих пор у меня есть мои модели созданы как и в миграционном файле, готовом быть создан
class CreateEvent
create_table :events do |t|
t.string :title
t.text :description
t.time :time_from
t.time :time_to
t.date :next_date
t.string :day
t.timestamps null: false
end
end
# An Event `has_one` Frequency
class CreateFrequency
create_table :frequencies do |f|
f.string :occurs
f.integer :event_id
t.timestamps null: false
end
end
# Was Thinking of pre populating this with Weekly and 2 weekly
# A frequency `belongs_to` Event
Я пытаюсь держать это как можно более простым, так что мне нужно реализовать какое-то логика где я буду делать расчет, начиная с событий next_date
и считая недели, прошедшие до сегодняшнего дня. Не совсем здесь.
Мог ли я даже пойти по пути наличия флага в модели событий, столбца с именем display
(boolean) и иметь задачу рейка, которая будет обновлять ее снова, используя next_date? Будет ли это работать? неуверенно логики есть ум
Любых советов или решений оценило
Спасибо
Спасибо за ваш ответ, я попробую его и посмотрю, как это получится :-) – Richlewis
ОК, так что на данный момент я получаю сообщение об ошибке 'PG :: InvalidParameterValue: ERROR:" time "units" week "not detected' .. было бы это из-за 'time_from', я использую это для хранения времени (15:00), и я использую time_to (18:00), значение, хранящееся в поле, похоже на« Январь 01, 2000 18 : 18', jan 01 всегда присутствует для каждой сохраненной записи? – Richlewis
А, да, имеет смысл. Вам понадобится тип данных, содержащий фактическую дату, чтобы иметь возможность извлечь из нее неделю. Изменение этой проблемы в timestamp должно решить проблему. Или если вы не хотите изменить time_from/time_to, вы можете добавить t.datetime: first_occurrence_at или что-то в этом роде. Отредактировал мой ответ. –