Я использую event_calendar gem в приложении rails.Event_calendar добавляет следующее в модель событий, чтобы определить даты начала и окончания представления календаря.
has_event_calendar :start_at_field => 'sdate', :end_at_field => 'tdate'
, где sdate
и tdate
- поля в модели.
Однако,в моем случае я не храню даты окончания в базе данных.Конечные даты рассчитываются на основе поля длительности, т.е. sdate + duration.У меня не было проблем с вычислением дат окончания в другом месте, но я не могу настроить его для event_calendar.
В основном мне нужно сделать
has_event_calendar :start_at_field => 'sdate', :end_at_field => '[event.sdate]+[event.duration]'
, но я не смог определитьправильный синтаксис.
- Возможно / целесообразно выполнять подобные расчеты в модели?Если да, то каков правильный синтаксис для получения и манипулирования значениями базы данных?
- Должен ли я переместить этот расчет в переменную?Каковы плюсы и минусы этого?
Я боролся с этим некоторое время.Благодарен за руку помощи, чтобы узнать, как это работает.
Спасибо!
РЕДАКТИРОВАТЬ
Рассматриваемая модель выглядит следующим образом:
# == Schema Information
# Schema version: 20110607040735
#
# Table name: schedules
#
# id :integer not null, primary key
# sdate :date
# tdate :date
# duration :integer
# created_at :datetime
# updated_at :datetime
#
class Schedule < ActiveRecord::Base
attr_accessible :sdate, :tdate, :duration
has_event_calendar :start_at_field => 'sdate', :end_at_field => calculated_tdate
scope :default, :order => 'schedules.sdate ASC'
def calculated_tdate
self.sdate+self.cruise.duration
end
end
но возникает ошибка
undefined local variable or method `calculated_tdate' for #<Class:0x10b62cb98>