여기에 미치겠습니다. 어떤 포인터라도 감사하게 받았다!예기치 않게 레일스 모델 변수가 변경됩니다.
배달 모델이 있는데 전달 방법에 따라 배달 상태를 업데이트하는 방법을 추가하려고합니다. 이 기능은 모델 클래스 내에서 정의하고 delivery_state 속성 모델 중 하나입니다 : 내가 로그에보고 있어요 무엇
def updateDeliveryState
expectedLines = DeliveryLine.where(:delivery_id => id,
:line_state => 'EXPECTED')
logger.debug "State1: #{delivery_state}"
if expectedLines.length == 0
if delivery_state == 'EXPECTED' || delivery_state == 'RECEIVING'
delivery_state = 'RECEIVED' # commenting this line fixes it
save
end
else
logger.debug "State2: #{delivery_state}"
if delivery_state == 'EXPECTED'
logger.debug "Updating to receiving"
delivery_state = 'RECEIVING'
save
end
end
end
2 개 logger.debug
라인 사이에 delivery_state이 해제 된 것입니다 :
State1: EXPECTED
DeliveryLine Load (4.5ms) SELECT "delivery_lines".* FROM "delivery_lines"
WHERE "delivery_lines"."line_state" = 'EXPECTED'
AND "delivery_lines"."delivery_id" = 227
State2:
, 그것은 확인 작업 나타납니다 그러나
State1: EXPECTED
DeliveryLine Load (9.6ms) SELECT "delivery_lines".* FROM "delivery_lines"
WHERE "delivery_lines"."line_state" = 'EXPECTED'
AND "delivery_lines"."delivery_id" = 227
State2: EXPECTED
Updating to receiving
을, 나는 배달 STI 것을 새로 고침 후 볼 수 있습니다 이따금 기대 되나요?
당신이 시도 할 수있는'최초'if' 내부 self.delivery_state = 'RECEIVED''로를 로컬 변수를 작성하지 않고 대신 setter를 호출하는지 확인하십시오. –