У меня есть задание, у которого много LoggedTimes.Я хочу установить ограничение в 8 часов зарегистрированного времени для выполнения задачи в любой день.Каков наилучший способ сделать это, чтобы я мог проверить, если последний зарегистрированный период этого человека «, так сказать, превышает его общее количество» за день?
Вот где я начинаю (Задача.rb):
validate :max_logged_daily_time
def max_logged_daily_time
if (params[:session_time] + (logged_times.where(:created_at => Date.today).to_a.sum(&:session_time)/60)) > 8
errors.add_to_base("Can't have more than 8 hours logged a day")
logged_time.errors.add('session_time', 'Logged times exceeded today')
end
end
В настоящее время эта проверка не работает (добавление еще одного LoggedTime после того, как было зарегистрировано 8 часов предыдущего зарегистрированного времени, просто добавляет его к остальным, вместо того, чтобы выдавать ошибку. Поскольку ошибок нетброшенный, я изо всех сил пытаюсь разобраться в проблеме. Это как-то связано с обработкой параметров?
Что подводит меня к вопросу о дизайне: теоретически я мог бы пересмотреть представление так, чтобыПользователь может отправить только 8 часов минус общее количество времени, которое он зарегистрировал в тот день, однако это выглядит как неуклюжее решение и противоречит принципу сохранения проверок в модели (и это, конечно, не помогает мне решить эту проблему).проблема с проверкой модели).
Любой совет здесь?
TIA