Rails在控制器中创建关联的记录

时间:2013-01-11 19:50:40

标签: ruby-on-rails

我有3张桌子:

项目

has_many :answers

问题 - >每个项目必须回答的问题

 has_many :answers

答案

belongs_to :project

belongs_to :question

因此,当我创建一个新项目时,我想循环遍历问题并创建答案记录。然后,用户可以看到所有问题并输入他们的答案。

在项目控制器中,我正在尝试创建这些记录。 但是,以下是行不通的:

  before_create :create_answers

protected
def create_answers
  Questions.each do |i|
    self.answers.build  contact_id: self.contact_id, question_id: Question[i].id
  end
end

感谢!!!

1 个答案:

答案 0 :(得分:2)

而不是:

Questions.each

执行:

Question.all.each

所有代码都需要在Project模型中,而不是ProjectsController。

而不是:

Question[i].id

执行:

i.id

确保这些属性也是attr_accessible

所有在一起:

before_create :build_answers

protected
def build_answers
  Question.all.each do |question|
    answers.build contact_id: contact_id, question_id: question.id
  end
end

attr_accessible位:

attr_accessible :contact_id, :question_id