У меня есть модель Attendance
, которая позволяет пользователю вводить время начала, окончания и перерыва, каждый в виде объекта Time
в рубине.Каждое посещение также имеет day
(объект ruby Date
).Я хочу, чтобы элементы Date были одинаковыми, поэтому я переопределяю операторы присваивания следующим образом:
def startTime= (t)
self[:startTime] = Time.mktime(day.year, day.month, day.day, t.hour, t.min)
end
def endTime= (t)
self[:endTime] = Time.mktime(day.year, day.month, day.day, t.hour, t.min)
end
def breakTime= (t)
self[:breakTime] = Time.mktime(day.year, day.month, day.day, t.hour, t.min)
end
Моя проблема заключается в том, что мои тесты не проходят только при переопределениифункция breakTime=
.Все они терпят неудачу при вызовах к new
, то есть att = Attendance.new @valid_attributes
, в частности к breakTime=
:
неопределенный метод `year 'для nil: NilClass
ОчевидноbreakTime=
вызывается до того, как day
определено на объекте, хотя startTime=
и endTime=
не вызывают так рано.Я понимаю, что это переопределение, вероятно, не элегантно, но я довольно плохо знаком с рельсами, поэтому я думаю, что кто-то уже совершал эту ошибку раньше.Как я должен делать это по-другому?