0
사용자, 제품 및 소유권의 세 가지 모델이 있습니다. 소유권은 사용자 및 제품에 속합니다. 제품 및 사용자는 많은 소유권을 보유합니다. 관련 모델의 공장 개선
은 내가 FactoryGirl 보석 다음과 같은 공장 생성 :factory :user do
sequence(:name) { |n| "Robot #{n}" }
sequence(:email) { |n| "numero#{n}@robots.com"}
association :location, factory: :location
end
factory :product do
sequence(:name) { |n| "Objet #{n}" }
association :location, factory: :location
end
factory :ownership do
association :user, factory: :user
association :product, factory: :product
end
을 그리고 난 그런 식으로 그것을 사용 :
let(:user) { FactoryGirl.create(:user) }
let(:product) { FactoryGirl.create(:product) }
let(:ownership) { FactoryGirl.create(:current_ownership, user: user, product: product) }
하지만, 내 공장을 향상이 작업을 수행하기 위해 할 :
let(:user) { FactoryGirl.create(:user) }
let(:product) { FactoryGirl.create(:product, owner: user) }
ide 그걸하는 법? 당신이 소유자가에 속성을 전달할 수 있다는 것을, 당신이 그렇게 공장을 구성
FactoryGirl.define do
factory :product do
# ...
ignore do
owner nil
end
after :create do |product, ev|
if ev.owner
create :ownership, user: ev.owner, product: product
end
end
end
end
이 방법 :
감사합니다. 이것은'before : create' 또는'after : create'입니까? 그리고'ev'는 무엇입니까? –
그래, 내 실수는, 당신의 경우에는'after : create'이어야합니다. 나는 대답에서 그것을 바로 잡았다. 그리고 ev (콜백의 두 번째 인수)는 팩토리 소녀가 콜백에 전달하는 평가자 객체입니다. 무시 된 속성에 대한 액세스 권한을 제공합니다. – jurglic