我有更多有地址的模型,有些只有address
,有些有shipping_address
和billing_address
。地址的方案是相同的。在factory_girl中,我需要复制粘贴地址属性定义,但如果可以在这里使用某种宏,那将会很棒。
我希望有类似的东西:
factory :organization do
name { Faker::Name.name }
# this could define street, city, zip, ... with prefix shipping_address
has_address :shipping_address
emnd
怎么做?
答案 0 :(得分:1)
我认为使用特征可以很好地解决您的问题:
require 'factory_girl'
require 'active_model'
class Person
include ActiveModel::Model
attr_accessor :name, :address
end
class Organization
include ActiveModel::Model
attr_accessor :name, :address
end
FactoryGirl.define do
factory :person do
name 'John Doe'
end
factory :organization do
name 'Some corp'
end
trait :with_address do
address '1234 Some road'
end
end
p FactoryGirl.build(:person, :with_address) #=> #<Person:0x007f8d220baca0 @name="John Doe", @address="1234 Some road">
p FactoryGirl.build(:organization, :with_address) #=> #<Organization:0x007fc9a1a30008 @name="Some corp", @address="1234 Some road">