【发布时间】:2018-11-29 10:39:00
【问题描述】:
我使用的是 Rails 5.1.6,但在 accept_nested_attributes_for 上遇到问题。
我有两个模型
class Material < ApplicationRecord
belongs_to :rubric, optional: true
accepts_nested_attributes_for :rubric
end
class Rubric < ApplicationRecord
has_many :materials, dependent: :nullify
end
我尝试通过 rubric_attributes 将 rubric id 设置为新项目。
describe 'create material' do
it 'should set rubric: :id' do
# prepare
item = FactoryBot.build(:material)
rubric = FactoryBot.create(:rubric)
# action
item.assign_attributes(
rubric_attributes: {
id: rubric.id
}
)
# check
expect(item.valid?).to eq(true)
expect(item.save).to eq(true)
expect(item.rubric_id).to eq(rubric.id)
end
end
但我有一个错误:
Failure/Error:
item.assign_attributes(
rubric_attributes: {
id: rubric.id
}
)
ActiveRecord::RecordNotFound:
Couldn't find Rubric with ID=1 for Material with ID=1
我在更新材料时遇到了同样的错误。
accepts_nested_attributes_for 的行为是可预测的,我不能使用 rubric_attributes 来设置现有的 rubric id?
【问题讨论】:
标签: ruby-on-rails ruby activerecord ruby-on-rails-5