Factorygirl 将 has_many 设置为 nil
Factorygirl set has_many as nil
我有一个 user
工厂,默认为 user_document
创建一个关联
FactoryGirl.define do
factory :user do |u|
sequence(:first_name) {|n| "firstname-#{n}" }
after(:create) do |user|
create(:user_document, document_type: :address_proof, user: user)
end
end
end
我想定义一个关联 user_document 为空的新工厂。我该怎么做呢 ?
[更新]
当我这样做时
factory :user_with_no_doc_buyer do
user_document nil
end
我收到一条错误消息:
NoMethodError: undefined method `user_document=' for #<User:0x007f97329c08f8>
当我这样做的时候
user_documents nil
我明白了
NoMethodError: undefined method `each' for nil:NilClass
谢谢
使用traits
FactoryGirl.define do
factory :user do |u|
sequence(:first_name) {|n| "firstname-#{n}" }
trait :with_user_document
after(:create) do |user|
create(:user_document, document_type: :address_proof, user: user)
end
end
end
end
使用文档创建用户
FactoryGirl.create(:user, :with_user_document)
使用空文档创建用户
FactoryGirl.create(:user)
我会创造两个特质。
FactoryGirl.define do
factory :user do
sequence(:first_name) {|n| "firstname-#{n}" }
trait :with_document do
after(:create) do |user|
create(:user_document, document_type: :address_proof, user: user)
end
end
trait :without_document do
user_documents []
end
end
end
那你就打电话给你需要的工厂吧
FactoryGirl.create(:user, :with_document)
例如
编辑:已经看到您希望 with 文档成为默认文档。这很容易。您可以只使用您拥有的代码并采纳我对没有文档的特征的建议,您可以在需要时调用它。
我有一个 user
工厂,默认为 user_document
FactoryGirl.define do
factory :user do |u|
sequence(:first_name) {|n| "firstname-#{n}" }
after(:create) do |user|
create(:user_document, document_type: :address_proof, user: user)
end
end
end
我想定义一个关联 user_document 为空的新工厂。我该怎么做呢 ?
[更新]
当我这样做时
factory :user_with_no_doc_buyer do
user_document nil
end
我收到一条错误消息:
NoMethodError: undefined method `user_document=' for #<User:0x007f97329c08f8>
当我这样做的时候
user_documents nil
我明白了
NoMethodError: undefined method `each' for nil:NilClass
谢谢
使用traits
FactoryGirl.define do
factory :user do |u|
sequence(:first_name) {|n| "firstname-#{n}" }
trait :with_user_document
after(:create) do |user|
create(:user_document, document_type: :address_proof, user: user)
end
end
end
end
使用文档创建用户
FactoryGirl.create(:user, :with_user_document)
使用空文档创建用户
FactoryGirl.create(:user)
我会创造两个特质。
FactoryGirl.define do
factory :user do
sequence(:first_name) {|n| "firstname-#{n}" }
trait :with_document do
after(:create) do |user|
create(:user_document, document_type: :address_proof, user: user)
end
end
trait :without_document do
user_documents []
end
end
end
那你就打电话给你需要的工厂吧
FactoryGirl.create(:user, :with_document)
例如
编辑:已经看到您希望 with 文档成为默认文档。这很容易。您可以只使用您拥有的代码并采纳我对没有文档的特征的建议,您可以在需要时调用它。