在使用Sequel时,我仍无法找到修复关联工厂问题的解决方案。
我有两个模型依赖于one_to_many
,它与Active Record中的has_many
相同,而many_to_one
则与Active Record中的belongs_to
相同。
以下是已定义的工厂:
FactoryGirl.define do
to_create { |instance| instance.save }
factory :post do
title "some title"
end
end
FactoryGirl.define do
to_create { |instance| instance.save }
factory :comment do
content "some content"
association :post, strategy: :build
end
end
运行build(:comment)
时,它失败并显示:
Associated object does not have a primary key.
有没有人知道如何解决这个问题?我总是可以先建立/创建一个帖子,然后将其签名为评论,但这很乏味。更重要的是,我将不得不删除association :post, strategy: :build
并使用一些整数随机值。
我正在使用:
factory_girl_rails 4.8.0
ruby 2.4.0
sequel-rails 0.9.15
sequel 4.45.0
答案 0 :(得分:3)
Sequel不支持向未保存的对象添加关联对象,除非您使用nested_attributes插件同时创建两者。因此,除非FactoryGirl有特定的代码来处理,否则它可能无法正常工作。
答案 1 :(得分:0)
看起来您的策略应该是创建而不是构建。这是我使用FactoryBot解决的方法:
after(:build) { |comment| comment.post ||= create(:post) }
如果您指定不带任何参数的关联并使用以下配置,则默认情况下会发生这种情况:
FactoryBot.use_parent_strategy = false