У меня есть две модели: расписание и задача. Задача принадлежит_описанию и расписанию has_many задач. Форма для задач - это вложенная форма расписания. Я пытаюсь написать либо код контроллера, либо модельный метод, который будет принимать пользовательское время datetime (называемое: time_frame) для задачи, и если это время-дата уже произошло (было в прошлом), выплевывает уведомление и перенаправляет. Я попытался сделать это несколькими способами, но никто из них не работал. Я пытался писать этот контроллер код для графики # обновления:рельсы - манипулировать данными datetime before_update
schedule_params[:tasks_attributes].each do |task|
if task[:time_frame] < DateTime.now
render 'update', :notice => 'You must pick a future time.'
end
end
А вот schedule_params:
def schedule_params
params.require(:schedule).permit(:emp_accepts,
tasks_attributes: [:title, :content, :_destroy, :time_frame,
:complete_time])
end
, но я был возвращаемые ошибки:
no implicit conversion of symbol to integer
Я пытался писать метод модели например, в модели Списка:
before_update :compare_datetimes
def compare_datetimes
puts 'before task is found'
self.tasks.each do |task|
puts 'here is the task'
if task.time_frame < DateTime.now
puts 'It is in the past'
end
end
end
«перед тем, как задача найдена» помещается на сервер, но ни одна из двух других puts не выполняется. Как мне это сделать?
Спасибо, я попробовал метод проверки, но он возвращает ошибку «неопределенный метод' <»для ноля: NilClass', если time_Frame пустого – Philip7899
, если вам требуется time_frame всегда присутствовать добавить присутствие валидатора перед datetime_in_future валидатора. Я обновлю свой ответ. – DiegoSalazar
Спасибо. Что касается контроллера, он все равно возвращает такое же неявное преобразование символа в строку ошибки? – Philip7899