#ruby-on-rails-4 #activerecord #nested-attributes #has-many-through
#ruby-on-rails-4 #activerecord #вложенные атрибуты #имеет много сквозных
Вопрос:
У меня есть класс 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
я хочу передать значение столбца order
Testquestion
.
def create
Test.create(test_params)
end
def test_params
params.require(:test).permit(:testname,question_attributes:[:questionname])
end
Как мне передать значение order
столбца, чтобы связанная модель (Testquestion) обновлялась.
Ответ №1:
Нет способа сделать это таким образом, вам нужно будет выбрать более длинный путь.
- Не забудьте добавить
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])
постскриптум: вы действительно должны приобрести привычку называть свои поля и переменные snake_case
и свои классы CamelCase
.