通过关联传递has_many中的参数

时间:2016-09-30 19:36:00

标签: ruby-on-rails-4 activerecord nested-attributes has-many-through

我有Test, Question, Testquestion

关联的课程has_many through
class Test
  has_many :testquestions
  has_many :questions, through: :testquestions
end

class Question
  has_many :testquestions
  has_many :tests, through: :testquestions
end

class Testquestion
  belongs_to :test
  belongs_to :questions
end

创建Test时,我希望传递orderTestquestion的值。

def create
   Test.create(test_params)
end

def test_params
  params.require(:test).permit(:testname,question_attributes:[:questionname])
end

我应该如何传递order列的值,以便关联模型(Testquestion)得到更新。

1 个答案:

答案 0 :(得分:2)

没有办法这样做,你需要走更长的路。

  1. 不要忘记将accepts_nested_attributes_for添加到您的对话中,以便嵌套操作能够正常运行。
  2. 检查您是否已将accepts_nested_attributes_for :question添加到Testquestion
  3. 让你的params结构合理。
  4. 这样的事情:

    {
      test: {
        testname: 'someName',
        testquestion_attributes: {
          order: someOrder,
          question_attributes: {
            questionname: 'someName'
          }
        }
      }
    }
    
    1. 需要你的参数。
    2. params.require(:test).permit(:testname, testquestion_params: [:id, :order, :_destroy, question_params: [:id, :questionname])

      P.S。旁注:您应该真正获得在snake_caseCamelCase中的课程中命名字段和变量的习惯。