У меня есть модель отчета, в которой много инструментов. Каждый инструмент имеет атрибут working_hours. Атрибут рабочих часов представляет общее количество часов, в течение которых инструмент использовался - вы знаете, чтобы отслеживать время обслуживания.
Идея рассматриваемой валидации заключается в том, чтобы инструмент не использовался более 24 часов в день. Я пробовал следующий код
class DayHoursValidator < ActiveModel::EachValidator
def validate_each record, key, value
most_recent_report = Report.where('tool_name LIKE ?', "%#{record.report.tool_name}%").last
record.errors[key] << "has done more than 24 hours in a day" if value - most_recent_report.toolbox[attrubute] > 24
end
end
Я получаю сообщение об ошибке в #{record.report.tool_name}
аспекте кода, поскольку report_id
для записи равно нулю.
В контроллере у меня есть @report.build_toolbox
, который - я думаю - должен создать ассоциацию; тем самым устанавливая report_id
Как мне исправить это? Спасибо