【发布时间】:2011-09-20 01:03:32
【问题描述】:
我正在使用 Ruby on Rails 3.0.9、RSpec-rails 2 和 FactoryGirl。我试图声明一个工厂关联模型,但我遇到了麻烦。
我有一个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
上面的示例在我的规范文件中按预期工作,但是 if 在 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
我该如何解决这个问题,以便从双方\工厂访问关联模型(也就是说,在我的规范文件中,我想使用像 user.account 和 @987654331 这样的 RoR 关联模型方法@)?
P.S.:我阅读了Factory Girl and has_one 问题,我的案例与链接问题中解释的案例非常接近。也就是说,我也有一个has_one 关联(在User 和Users::Account 类之间)。
【问题讨论】:
-
只是好奇,你有一个
User,然后你有一个Users::Account,它应该是复数还是应该是User::Account或错字? -
@kwon - 这不是错字。我有一个
Users::Account课程。
标签: ruby-on-rails ruby ruby-on-rails-3 rspec factory-bot