在FactoryGirl中使用不同的外键

时间:2013-06-22 23:12:58

标签: ruby-on-rails ruby-on-rails-3 factory-bot

简而言之:我想创建一个使用与指定foreign_key和主键关联的Factory。

详情:

这些是我正在使用的模型:

class Event < ActiveRecord::Base  
  belongs_to :municipality, :foreign_key => :municipality_code, :primary_key => 'code'
  ...
end

class Municipality < ActiveRecord::Base
  has_many :events, :foreign_key => 'municipality_code', :primary_key => 'code'
  ...
end

我试图以这种方式创建工厂:

FactoryGirl.define do
  factory :event do 
    sequence(:name){|n| "Event-#{n}"}
    ...
    municipality 
  end
end

但它没有使用Event中定义的foreign_key municipality_code 以及市政当局定义的主键代码。 有没有办法在创建与FactoryGIrl的关联时指定不同的外键和主键?

谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

我解决它的方式是自己管理这段关系。不确定这是否是最好的答案,但它对我有用。

FactoryGirl.define do
  factory :event do
    sequence(:name){|n| "Event-#{n}"}
  end
  factory :municipality do 
    after(:create) do |m, eval|
      # create one or many here...
      FactoryGirl.create(:event, municipality_code: m.code)
    end
  end
end