Как указать приборы FactoryGirl для связанных данных модели? - PullRequest
1 голос
/ 20 сентября 2011

Я использую Ruby on Rails 3.0.9, RSpec-rails 2 и FactoryGirl. Я хотел бы сгенерировать данные, связанные с фабричной моделью , относящиеся к учетным записям для пользователей (в классе User я указывал ассоциацию has_one :account), чтобы в файлах спецификаций можно было сделать следующее:

let(:user) { Factory(:user) } 

it "should have an account" do
  user.account.should_not be_nil # Note: 'user.account'
end

В настоящее время у меня есть файл factories/user.rb, подобный следующему:

FactoryGirl.define do
  factory :user, :class => User do |user|
    user.attribute_1
    user.attribute_2
    ...
  end
end

и factories/users/account.rb файл, подобный следующему:

FactoryGirl.define do
  factory :users_account, :class => Users::Account do |account|
    account.attribute_1
    account.attribute_2
    ...
  end
end

Каков правильный \ общий способ представления данных FactoryGirl для обработки связанных с RoR моделей в спецификационных файлах?

1 Ответ

0 голосов
/ 20 сентября 2011

Прежде всего, вам не нужен: class => User, поскольку он будет выведен автоматически.

FactoryGirl.define do
  factory :user do
    attribute_1      'Some'
    attribute_2      'Text'
  end
end

Чтобы использовать ассоциации на вашем заводе, просто включите имя напрямую:

FactoryGirl.define do
  factory :post do
    user
    title    'Hello'
    body     'World'
  end
end

В приведенном выше примере пользователь будет связан с сообщением.

Вы также можете использовать именованные фабрики:

FactoryGirl.define do
  factory :post do
    association :user, :factory => :administrator
    title    'Hello'
    body     'World'
  end
end

Документация все объясняет.

...