Я использую Ruby on Rails 3.0.9, RSpec-rails 2 и FactoryGirl. Я пытаюсь сформулировать модель ассоциации Factory, но у меня проблемы.
У меня есть файл factory / user.rb
, как показано ниже:
FactoryGirl.define do
factory :user, :class => User do
attribute_1
attribute_2
...
association :account, :factory => :users_account, :method => :build, :email => 'foo@bar.com'
end
end
и файл factory / users / account.rb
, как показано ниже:
FactoryGirl.define do
factory :users_account, :class => Users::Account do
sequence(:email) {|n| "foo#{n}@bar.com" }
...
end
end
Приведенный выше пример работает должным образом в моих файлах спецификаций, но if в операторе factory: users_account
я добавляю ассоциацию : код пользователя
, чтобы иметь
FactoryGirl.define do
factory :users_account, :class => Users::Account do
sequence(:email) {|n| "foo#{n}@bar.com" }
...
association :user
end
end
, я получаю следующая ошибка:
Failure/Error: Unable to find matching line from backtrace
SystemStackError:
stack level too deep
Как я могу решить эту проблему, чтобы получить доступ к связанным моделям с обеих сторон \ factory (то есть в моих файлах спецификаций я хотел бы использовать методы модели ассоциации RoR, такие как user.account
и account.user
) ?
PS: Я прочитал Factory Girl and has_one вопрос, и мой случай очень близок к случаю, описанному в связанной ссылке вопрос. То есть у меня тоже есть ассоциация has_one
(между классами User
и Users :: Account
).