Я сталкиваюсь с очень странной ошибкой с самоцветом make_voteable . На самом деле я даже не уверен, что это связано с make_voteable
или с проблемой рейка.
Мое приложение имеет модель проекта. Проекты имеют атрибут статуса. Они начинаются как «Разрабатывается», и по истечении установленного срока разработки статус изменяется на «Ожидание голосования». Затем пользователи могут голосовать за проекты "за" или "против" (до истечения срока голосования), чтобы расставить приоритеты.
Таким образом, если статус проекта «Ожидание голосования», в представлении проекта отображаются ссылки на следующие действия на контроллере моих проектов:
def vote_yes
@project = Project.find(params[:id])
current_user.up_vote(@project)
flash[:success] = 'Thanks for voting!'
redirect_to @project
rescue MakeVoteable::Exceptions::AlreadyVotedError
flash[:error] = 'You already voted!'
redirect_to @project
end
def vote_no
@project = Project.find(params[:id])
current_user.down_vote(@project)
flash[:success] = 'Thanks for voting!'
redirect_to @project
rescue MakeVoteable::Exceptions::AlreadyVotedError
flash[:error] = 'You already voted!'
redirect_to @project
end
Все отлично работает, если я обновляю срок / статус / голосования_деклинии через терминал или вручную меняю запись в базе данных. Голосование работает должным образом, при этом up_votes и down_votes сохраняются в соответствующей записи проекта.
Однако, если я запустил задание cron, которое я настроил, чтобы позаботиться об этом, который является обычным рабочим процессом приложения, представления отображают ссылки для голосования, пользователи могут щелкать по ним как обычно, но голосование в таблице проектов не сохраняется. Однако таблица голосований заполняется нормально, и пользователь не может голосовать снова.
Единственное, что делает задание cron, это запускает этот фрагмент кода из модели Project:
def self.close_projects
@finished_projects = Project.where('deadline < ? and status = ?', Time.now.utc, "Developing")
@finished_projects.each do | project |
project.update_attribute(:status, "Pending voting")
project.update_attribute(:voting_deadline, Time.now.utc + 1.week )
end
end
Только последнее замечание: я запустил миграцию, чтобы добавить столбец голосования в таблицу проектов после запуска миграции, которая добавила up / down_votes к той же модели. Я не думаю, что это должно быть проблемой, но, возможно, это стоит заметить.
Я действительно ценю любой вклад.