Tôi đang sử dụng Ruby on Rails 3.0.9, RSpec-rails 2 và FactoryGirl. Tôi đang cố gắng nêu ra một mô hình hiệp hội Nhà máy nhưng tôi đang gặp rắc rối.Vấn đề mô hình liên kết FactoryGirl: "SystemStackError: mức xếp chồng quá sâu"
Tôi có một tập tin factories/user.rb
như sau:
FactoryGirl.define do
factory :user, :class => User do
attribute_1
attribute_2
...
association :account, :factory => :users_account, :method => :build, :email => '[email protected]'
end
end
và một tập tin factories/users/account.rb
như sau:
FactoryGirl.define do
factory :users_account, :class => Users::Account do
sequence(:email) {|n| "foo#{n}@bar.com" }
...
end
end
Ví dụ trên làm việc như mong đợi trong file spec của tôi, nhưng nếu trong tuyên bố factory :users_account
Tôi thêm mã association :user
để có
FactoryGirl.define do
factory :users_account, :class => Users::Account do
sequence(:email) {|n| "foo#{n}@bar.com" }
...
association :user
end
end
tôi nhận được lỗi sau:
Failure/Error: Unable to find matching line from backtrace
SystemStackError:
stack level too deep
Làm thế nào tôi có thể giải quyết vấn đề đó như vậy để truy cập liên quan đến mô hình từ cả hai phía \ nhà máy (có nghĩa là, trong các tập tin spec của tôi Tôi muốn sử dụng liên kết ROR phương pháp mô hình như user.account
và account.user
) ?
P .: Tôi đọc câu hỏi Factory Girl and has_one và trường hợp của tôi rất gần với trường hợp được giải thích trong câu hỏi được liên kết. Nghĩa là, tôi cũng có một liên kết has_one
(giữa các lớp User
và Users::Account
).
Chỉ cần tò mò, bạn có 'Người dùng' và sau đó bạn có Tài khoản người dùng', có nghĩa là số nhiều hoặc phải là 'Người dùng :: Tài khoản' hoặc lỗi đánh máy? – nowk
@kwon - Nó không phải là lỗi đánh máy. Tôi có một lớp 'Users :: Account'. – Backo