Проверки вне области записи - PullRequest
1 голос
/ 28 октября 2011

У меня есть модель отчета, в которой много инструментов. Каждый инструмент имеет атрибут 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

Как мне исправить это? Спасибо

...