0

我有一个类Test, Question, Testquestion通过has_many through传递参数中的has_many通过关联

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我想传递的Testquestionorder列的值。

def create 
    Test.create(test_params) 
end 

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

我应该如何通过order列的值,使相关模型(Testquestion)得到更新。

回答

1

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

  1. 不要忘了将accepts_nested_attributes_for添加到你的assossiations,以便嵌套的操作将实际工作。
  2. 检查您是否已将accepts_nested_attributes_for :question添加到Testquestion
  3. 让你的params结构正确。

像这样:

{ 
    test: { 
    testname: 'someName', 
    testquestion_attributes: { 
     order: someOrder, 
     question_attributes: { 
     questionname: 'someName' 
     } 
    } 
    } 
} 
  • 需要您PARAMS。
  • params.require(:test).permit(:testname, testquestion_params: [:id, :order, :_destroy, question_params: [:id, :questionname])

    附:旁注:你应该非常喜欢在snake_case和你的班级CamelCase中命名你的字段和变量。

    +0

    它的工作就像一个魅力。非常感谢你 –