【发布时间】:2016-06-05 23:26:40
【问题描述】:
我想生成一个属于:topic 和:group 的:stake 工厂。 :topic 应该属于 :group(如 :owner_group),在这种情况下,它应该是相同的 :group(作为 :stake 所属的)。主题也属于:membership。简而言之,我希望它设置有效的对象:
it 'should set up all the factories' do
member = FactoryGirl.create(:membership)
topic = FactoryGirl.create(:topic, owner_group: member.group, membership: member)
stake = FactoryGirl.create(:stake, group: member.group, topic: topic)
end
但我得到了错误:
失败/错误:stake = FactoryGirl.create(:stake, group: member.group, topic: topic) ActiveRecord::RecordInvalid: 验证失败:组已被占用
这是我的工厂:
factory :user
sequence(:email) { |n| "foo#{n}@bar.com" }
end
factory :group
name Faker::Company.name
factory :owner_group
end
end
factory :membership
user
group
end
factory :topic
owner_group
membership
end
factory :stake
group
topic
end
topic.rb 有这个关联:
belongs_to :owner_group, class_name: "Group", foreign_key: "group_id"
我过去曾用 rake db:test:prepare 纠正过类似的错误,但它不起作用。我还使用 database_cleaner gem 配置了 spec_helper.rb。所以我怀疑这就是我建立工厂的方式。
我的工厂关联或我创建对象的方式中是否存在导致此错误的任何内容?
【问题讨论】:
标签: ruby-on-rails ruby rspec factory-bot