加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读