Проблема модели ассоциации FactoryGirl: «SystemStackError: слишком глубокий уровень стека»

Я использую 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 ).

11
задан Community 23 May 2017 в 12:09
поделиться