在创建记录时传递多个关联ID

时间:2014-04-26 20:52:34

标签: ruby-on-rails ruby activerecord

我目前有一个名为Problem的模型。这通过belongs_to与用户关联,并且用户has_many问题。用户可以对问题进行投票。有了这个,我有一个投票模型,对问题和用户都有belongs_to / index。

此代码创建我的投票,但它也不会带来用户ID。最终我想让用户只能对问题进行一次投票。我怎样才能得到它,因此它在创建时接受两个参数而不仅仅是problem_id。

值得关注的问题/ Vote.rb

def upvote
  @problem = Problem.find(params[:id])
  @problem.votes.create
  redirect_to(problem_path)
end

的routes.rb

resources :problems do
member do
  post 'upvote'
end

index.html.erb

  <%= button_to '+1', upvote_problem_path(problem), method: :post %>

1 个答案:

答案 0 :(得分:0)

我想您可以使用current_user.id获取当前用户的ID(如果您使用的是Devise),并且user_id表中有votes列(如果不,通过迁移创建它,然后你可以写这样的动作:

def upvote
  @problem = Problem.find(params[:id])
  @problem.votes.create :user_id => current_user.id
  redirect_to problem_path(@problem)
end