我正在试图弄清楚如何编写属于2个不同模型的工厂,每个模型应该具有相同的父模型.这是人为的示例代码:
class User < ActiveRecord::Base has_many :widgets has_many :suppliers attr_accessible :username end class Widget < ActiveRecord::Base belongs_to :user has_many :parts attr_accessible :name end class Supplier < ActiveRecord::Base belongs_to :user has_many :parts attr_accessible :name end class Part < ActiveRecord::Base belongs_to :supplier belongs_to :widget attr_accessible :name end
这是我到目前为止所拥有的:
factory :user do name 'foo' end factory :widget do association :user name 'widget' end factory :supplier do association :user name 'supplier' end factory :part do association :widget association :supplier name 'part' end
这个问题是part.widget.user!= part.supplier.user和它们必须是相同的.
我试过以下但没有成功:
factory :part do association :widget association :supplier,user: widget.user name 'part' end
有什么建议?或者在创建零件后是否必须对其进行修改?
谢谢
解决方法
我相信你可以用
callback做到这一点:
factory :part do association :widget association :supplier name 'part' after(:create) do |part| user = FactoryGirl.create(:user) part.widget.user = part.supplier.user = user end end
另见:Get two associations within a Factory to share another association
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。