4
나는 내 머리를 두들겨 봤습니다. 나는 특성의 위에 특성을 덮어 쓸 수 있기를 원한다. 나는 documentation과 몇 가지 인터넷 예제를 읽고 있었지만 제대로 작동하지는 못합니다. 당신이 상속하지 않습니다 이는 basic_instant_instance
이 -공장 소녀 패스 매개 변수로 특성
ArgumentError: Trait not registered: start
나는 내 머리를 두들겨 봤습니다. 나는 특성의 위에 특성을 덮어 쓸 수 있기를 원한다. 나는 documentation과 몇 가지 인터넷 예제를 읽고 있었지만 제대로 작동하지는 못합니다. 당신이 상속하지 않습니다 이는 basic_instant_instance
이 -공장 소녀 패스 매개 변수로 특성
ArgumentError: Trait not registered: start
:
test "..." do
#overwrite start_time
middle = create(:basic_instant_instance, start: 1.hours.ago)
end
FactoryGirl.define do
factory :instant_instance do
trait :active_now do
#attributes...
transient do
start nil
end
#overwrite start_time
start_time start.present? ? start : Time.now
end
factory :basic_instant_instance, traits: [:active_now]
end
을 내가 점점 계속 :
이
내가 뭘 원하는지의 일종이다instant_instance
에서이므로 특성 [: active_now] 또는 시작 특성에 대해 아무것도 모릅니다.
Factory 인스턴스를 작성할 때 중괄호 안에 배치하여 start_time을 평가해야합니다. 그렇지 않으면 시작이 초기화되기 전에 평가됩니다. 그래서 다음과 같이 호출 다음
FactoryGirl.define do
factory :instant_instance do
trait :active_now do
#attributes...
transient do
start nil
end
#overwrite start_time
start_time { start.present? ? start : Time.now }
end
end
end
과 : 다음과 같은
시도 뭔가
create(:instant_instance, start: 1.hours.ago, :active_now)
가 나는 특성까지 임시 데이터를 전달할 수없는 잘못이었다 보인다 - 개정 한 내 따라서 적절하게 평가하려면 중괄호가 필요하다는 것을 깨달았습니다 – David
또한 다음과 같이 작동합니다. create (: basic_instant_instance, start : 1.hours.ago). 그건 그렇고, 나는 이해하지 못한다 : "basic_instant_instance ...는 instant_instance로부터 상속받지 않으므로 특성 [: active_now] 또는 속성을 시작하는 것에 대해 아무것도 모릅니다." – Gaston
[상속] (https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#inheritance)을 방문하면 댓글에서 설명하는 것이 더 효과적입니다. 필요한 경우 내 대답에 추가 정보를 추가 할 수 있습니다. – David