Я пытаюсь создать новый объект, связанный с двумя другими моделями, но мне трудно заставить его работать.
Модель:
голос.rb
class Vote < ActiveRecord::Base
belongs_to :solution
belongs_to :user
end
(Решение и модель пользователя имеют has_many :votes
на своей стороне.
В моем контроллере решений я делаю это:
def process_vote
solution = Solution.find(params[:id])
vote = Vote.where(:user => current_user, :solution => solution)
if(vote.count == 0)
newvote = Vote.new
newvote.user = current_user
newvote.positive = true
newvote.solution = solution
newvote.save
end
respond_to do |format|
format.js {
render :nothing => true
}
end
end
Запрос, сгенерированный ActiveRecord, ищет неправильные столбцы, это то, что консоль показывает, когда я вызываю метод process_vote
:
(0.6ms) SELECT COUNT(*) FROM `votes` WHERE `votes`.`user` = 2 AND `votes`.`solution` = 5
Mysql2::Error: Unknown column 'votes.user' in 'where clause': SELECT COUNT(*) FROM `votes` WHERE `votes`.`user` = 2 AND `votes`.`solution` = 5
Completed 500 Internal Server Error in 17ms
ActiveRecord::StatementInvalid (Mysql2::Error: Unknown column 'votes.user' in 'where clause': SELECT COUNT(*) FROM `votes` WHERE `votes`.`user` = 2 AND `votes`.`solution` = 5):
app/controllers/solutions_controller.rb:74:in `process_vote'
Есть идеи, что может быть не так? Мне кажется, что отношениянастроены нормально. Фактические имена столбцов user_id
и solution_id
.