ruby-on-rails – 在创建新模型之前,FactoryGirl可以检查数据库
发布时间:2020-12-17 02:30:44 所属栏目:百科 来源:网络整理
导读:我有以下工厂设置: FactoryGirl.define do factory :country do |f| f.name "USA" f.country_code "USA" f.currency_code "USD" end factory :region do |f| f.name "East Coast" f.country {Country.first} end factory :state do |f| f.name 'CA' f.regio
我有以下工厂设置:
FactoryGirl.define do factory :country do |f| f.name "USA" f.country_code "USA" f.currency_code "USD" end factory :region do |f| f.name "East Coast" f.country {Country.first} end factory :state do |f| f.name 'CA' f.region {Region.first} f.country {Country.first} end end 我想在该地区做什么&状态工厂是检查数据库中是否已存在条目,如果是,则使用该条目,并且仅当未找到条目时才创建新模型. 这是我想到的一个例子,但不知道如何创建它: factory :state do |f| f.name 'CA' f.region {Region.first || Factory(:region} f.country {Country.first || Factory(:state} end 我想要这样做的原因是将条目注入我的数据库,该数据库将填充表单选择字段&这样我就可以用黄瓜测试了. 解决方法
您可以使用回调来完成此任务:
FactoryGirl.define do factory :country do |f| f.name "USA" f.country_code "USA" f.currency_code "USD" end factory :region do |f| f.name "East Coast" after_build {|r| r.country = (Country.first || Factory(:country))} end factory :state do |f| f.name 'CA' after_build do |s| s.region = Region.first || Factory(:region) s.country = Country.first || Factory(:country) end end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |