Я использую Ruby on Rails 3.0.9, RSpec-rails 2 и FactoryGirl.Я пытаюсь сформулировать модель ассоциации Factory, но у меня проблемы.
У меня есть файл factories/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
и файл factories/users/account.rb
, как показано ниже:
FactoryGirl.define do
factory :users_account, :class => Users::Account do
sequence(:email) {|n| "foo#{n}@bar.com" }
...
end
end
Приведенный выше пример работает, как и ожидалось, в моих файлах спецификаций, но , если в операторе factory :users_account
, я добавляю код association :user
, чтобы
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
Как мне решить эту проблему, чтобы получить доступ к связанным моделям с обеих сторон \ заводов (то есть в моих спецификационных файлах яхотел бы использовать методы модели ассоциации RoR, такие как user.account
и account.user
) ?
PS: я прочитал вопрос Factory Girl и has_one , и мой случайочень близко к делу, объясненному в связанном вопросеТо есть у меня тоже есть ассоциация has_one
(между User
и Users::Account
классами).