我正在使用Ruby on Rails 3.0.9,RSpec-rails 2和FactoryGirl。我试图说明一个工厂协会模型,但我有麻烦。FactoryGirl关联模型麻烦:“SystemStackError:堆栈级别太深”
我有一个factories/user.rb
文件类似如下:
FactoryGirl.define do
factory :user, :class => User do
attribute_1
attribute_2
...
association :account, :factory => :users_account, :method => :build, :email => '[email protected]'
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
我怎样才能解决这个问题,所以从两侧\工厂访问关联模型(也就是,在我的规范文件,我想用回报率协会模型方法如user.account
和account.user
)?
P.S .:我读了Factory Girl and has_one的问题,我的情况与链接问题中解释的情况非常接近。也就是说,我也有一个has_one
关联(在User
和Users::Account
类之间)。
只是好奇,你有一个'用户',然后你有一个'用户::帐户',是否应该是复数或应该是'User :: Account'或错字? – nowk
@kwon - 这不是一个错字。我有一个'Users :: Account'类。 – Backo