通过关联在 has_many 中传递参数
passing parameter in has_many through association
我有一个 class 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
时,我想传递 Testquestion
的 order
列的值。
def create
Test.create(test_params)
end
def test_params
params.require(:test).permit(:testname,question_attributes:[:questionname])
end
我应该如何传递 order
列的值以便更新相关模型(Testquestion)。
没有办法那样做,你需要走更长的路。
- 不要忘记将
accepts_nested_attributes_for
添加到您的关联中,以便嵌套操作实际起作用。
- 检查您是否已将
accepts_nested_attributes_for :question
添加到 Testquestion
。
- 让您的参数结构正确。
像这样:
{
test: {
testname: 'someName',
testquestion_attributes: {
order: someOrder,
question_attributes: {
questionname: 'someName'
}
}
}
}
- 需要你的参数。
params.require(:test).permit(:testname, testquestion_params: [:id, :order, :_destroy, question_params: [:id, :questionname])
p.s。旁注:您真的应该养成在 snake_case
中命名您的字段和变量以及在 CamelCase
.
中命名您的 类 的习惯
我有一个 class 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
时,我想传递 Testquestion
的 order
列的值。
def create
Test.create(test_params)
end
def test_params
params.require(:test).permit(:testname,question_attributes:[:questionname])
end
我应该如何传递 order
列的值以便更新相关模型(Testquestion)。
没有办法那样做,你需要走更长的路。
- 不要忘记将
accepts_nested_attributes_for
添加到您的关联中,以便嵌套操作实际起作用。 - 检查您是否已将
accepts_nested_attributes_for :question
添加到Testquestion
。 - 让您的参数结构正确。
像这样:
{
test: {
testname: 'someName',
testquestion_attributes: {
order: someOrder,
question_attributes: {
questionname: 'someName'
}
}
}
}
- 需要你的参数。
params.require(:test).permit(:testname, testquestion_params: [:id, :order, :_destroy, question_params: [:id, :questionname])
p.s。旁注:您真的应该养成在 snake_case
中命名您的字段和变量以及在 CamelCase
.