Я пытаюсь создать ассоциацию has_many factorygirl с ассоциацией polmorphic, используя новый синтаксис. Вот код. Он неправильно строит адрес и связывает его с сайтом.Factory Girl with polymorphic has_many association
class Address < ActiveRecord::Base
belongs_to :addressee, :polymorphic => true
end
class Site < ActiveRecord::Base
has_many addresses, :as => :addressee, :dependent => :destroy
end
***** FACTORYGIRL ******
FactoryGirl.define do
factory :address, class: 'Address' do
property_type "House"
street_number "31"
street_type "STREET"
suburb "XXXXX"
postcode "XXXX"
end
factory :site_address, class: 'Address' do
property_type "House"
street_number "31"
street_type "STREET"
suburb "XXXX"
postcode "XXXX"
site
end
end
FactoryGirl.define do
factory :site, class: 'Site' do
name "MyString"
organisation_category nil
service_type_organisation_category_id 1
telephone "MyString"
fax "MyString"
email "MyString"
url "MyString"
clinical_software_package_id 1
billing_software_package_id 1
bulk_billing false
disabled_access false
ncacch false
parking false
organisation nil
factory :site_with_addresses do
ignore do
address_count 1
end
after (:create) do |site,evaluator|
FactoryGirl.create_list(:site_address, evaluator.address_count, addressee: site)
end
end
end
end
Я думаю, что это не сработает. Потому что у него нет фабрики под названием «адресат». 'Если имя фабрики такое же, как ассоциация name' – ck3g
Эй, ребята, https://gist.github.com/emilevictor/a376231cf11345b35e1b Вот источник factorygirl для моих сайтов фабрики. Я думал, что включил его, но вместо этого я случайно включил фабрику адресов. Соответствующий код: site_address и: site. Текущий метод, который я использую (как показано на сайте), неверен. –
Это отлично сработало для меня. Похоже, что FactoryGirl понимает, что ': addressee' является полиморфной ассоциацией и правильно устанавливает свойства': addressee_id' и ': addressee_type' объекта Address. – Franco