如何在创建操作中将2个模型与另一个模型相关联

时间:2010-09-21 19:45:03

标签: ruby-on-rails rails-models

我有3个具有以下关联的模型。模型问题属于特定用户并且具有许多答案,答案模型属于用户和问题。因此,用户模型有许多问题和答案。 我的答案模型有字段User_id和question_id,用于标识答案发布到的问题的所有者以及谁创建或拥有该问题。那么如何将用户和问题ID分配给我的创建操作的答案以及我发布答案的视图上的链接结构是什么。另一个问题是,这是最好的方法。我的目标是在用户仪表板上显示用户问题和答案,这样如果用户查看问题,他可以看到该问题的答案,反之亦然。

1 个答案:

答案 0 :(得分:0)

简短回答:

Answer.create(params[:answer].merge(:question_id => @question.id, :user_id => @user.id)

@question.asnwers.create(params[:answer].merge(:user_id => @user.id)

@user.answers.create(params[:answer].merge(:question_id => @question.id)

答案很长,我假设您可以获得登录用户,并且您将路由定义为:

map.resources :questions, :has_many => [:answers]

所以你的路线就像:example.com/questions/:question_id/answers。然后你在控制器中@question = Question.find(params[:question_id])

我不明白你发布新答案的链接结构是什么意思。首先,您需要一个指向new的链接,例如link_to('New answer',new_question_answer_path(@question))。

然后,在控制器中:

def new
  @question = Question.find(params[:question_id])
  @answer = Answer.new
end

在新视图中:

<% form_for :answer, [@question, @answer] do |f| %>
  Your form stuff
<% end %>

然后你会有创建动作......我没有尝试过这段代码,但是你明白了,对吗?