레일을 시작하기 전에 블록 작업이 중단되었습니다. 두 개의 datetime 필드 사이의 차이를 계산하여 모델을 반복하고 정수 필드 값을 업데이트하려고합니다. 콘솔에서 이렇게 '루비 블록 - NoMethodError : 정의되지 않은 메소드 '-'for nil : NilClass
m = MyModel.find(1)
m.new_integer_field = m.existing_datetime_field - m.parent_object.existing_datetime_field
m.save
가 나는 그것이 기본 구문 것 같아요,하지만 나오지 않았어 :
이MyModel.all.each do |m|
m.new_integer_field = m.existing_datetime_field - m.parent_object.existing_datetime_field
m.save!
end
결과는 내가 할 경우 하나 개의 기록에 작동
NoMethodError: undefined method `-' for nil:NilClass
입니다 명백한 설명을 찾는다. 앞으로 몇 가지 조언을 얻게되어 감사하게 생각합니다.
무엇이'MyMethod.all.each {| i | puts i.existing_datetime_field.inspect}'? 이 객체 중 하나가'nil '인 것 같아서'-' 메소드가 정의되지 않은 이유를 설명합니다. –
그것은 나에게 많은 데이트를 주지만, 루프의 끝에서 => nil이 아니다. –
아니, 네가 맞아! 인스턴스 중 하나에 nil 값이 있습니다! –