Я пытаюсь изменить состояние объекта либо:
1) пользователь нажимает кнопку в /view/matchdays/index.html.erb:
<%= button_to "End Matchday", {:action => :end_matchday}, :class => "push-9" %>
2) или если прошло 2 дня. Каждый раз, когда пользователь переходит к индексу, он запускает end_of_matchday_check, чтобы проверить, правильно ли это.
matchdays_controller.rb:
def index
@matchdays = Matchday.all
@current_matchday = Matchday.last
# Runs a check on the last matchday whether user can edit the matchday
end_of_matchday_check unless Matchday.all.empty?
end
def end_matchday
@current_matchday = Matchday.last
@current_matchday.update_attributes(:ended => true)
redirect_to matchdays_path
end
private
# Returns true if the last matchday has exceeded 2 days = the allowable editing priod.
def end_of_matchday_check
@current_matchday = Matchday.last
unless @current_matchday.ended?
@current_matchday.update_attributes(:ended => true) if @current_matchday.created_at + 2.days > Time.now
end
end
Однако я продолжаю сталкиваться с этой проблемой (журнал разработки):
WARNING: Can't mass-assign protected attributes: ended
Но если я закомментирую строку attr_accessible или добавлю: конец к ней, она будет работать. Однако каждый раз, когда я посещаю страницу индекса, она будет меняться на matchday.ended на true каждый раз, когда я создаю новый объект для игрового дня.
Matchday.rb:
attr_accessible :name, :best_of, :description
Есть идеи, почему это происходит?