Shoulda의 validates_presence_of를 사용할 때 before_validation 콜백이 발생합니다. RSpec은 nilClass의 validates_presence_of를 사용합니다.
before_validation :set_document, :set_product, :set_price
내가 전달하는이 스펙을 얻으려고 :
it { should validate_presence_of(:quantity).with_message("Please a quantity.") }
나는 광고 항목의 수량, UNIT_PRICE, TAX_RATE, 가격 0의 데이터베이스 기본값을 가지고있다. 광고 항목의 유효성을 검사하기 전에 다른 속성의 가격이 변경된 경우에 대비해 가격을 계산합니다. TOTAL_PRICE 방법은
def set_price
self.price = total_price
end
그리고 :
3) LineItem
Failure/Error: it { should validate_presence_of(:quantity).with_message("Please a quantity.") }
NoMethodError:
undefined method `*' for nil:NilClass
# ./app/models/line_item.rb:153:in `total_price'
# ./app/models/line_item.rb:223:in `set_price'
# ./spec/models/line_item_spec.rb:32:in `block (2 levels) in <top (required)>'
는 set_price는 콜백 매우 간단 내 :
나는이 계산에 포함 된 모든 속성에 대해이 오류와 유사한 오류가 발생할 수 매우 간단합니다 :
나는 이걸로 어떤 도움을 주셔서 감사합니다. 완전히 뒤죽박죽. 사용자 지정 유효성 검사 방법에 대한 게시물을 보았습니다. 이것은 아주 기본적인 것처럼 보입니다. 나는 어떻게 진행해야하는지 알 수 없습니다.
'unit_price'란 무엇입니까? 그것은 아마도'nil' 일 것입니다. – ck3g
unit_price는 tax_rate, 수량 및 가격처럼 db 기본값 0을 갖습니다. –
따라서이 두 필드의 로그 값에'nil'을 시도해보십시오. 그리고/또는'self.quantity'와'self.unit_price'를 사용하려고 시도하십시오 – ck3g