date_received, created_at 및 received_state가있는 송장 모델이 있습니다.레일 3 - 레코드 생성시 날짜 비교
레코드를 만들 때 date_received와 created_at를 비교하여 received_state를 업데이트하려고합니다. 특히 created_at가 date_received보다 2 일 이상 큰 경우 received_state는 red와 같아야합니다. 따라서 다음과 같은 내용이 있습니다 :
if created_at > date_received + 2 days
@invoice.update_attribute(:received_state, red)
else
@invoice.update_attribute(:received_state, green)
end
나는 date-in-words 도우미 메서드가 있지만이 인스턴스에서 사용하는 방법을 모르겠습니다. 도움을 주셔서 감사합니다.
업데이트 : 다음을 시도했습니다.
if (:date_received - :created_at).to_i > 2
@invoice.update_attribute(:received_state, red)
else
@invoice.update_attribute(:received_state, green)
end
UPDATE : 2 : 없음 오류가 있지만, 기록 중 상태로 업데이트하지되어 나는 다음을 시도하고, 기록은 조건 녹색이 충족 된 경우에도 빨간색으로 업데이트됩니다
if :date_received.to_i - :created_at.to_i > 2
@invoice.update_attribute(:received_state, red)
else
@invoice.update_attribute(:received_state, green)
end
입력 해 주셔서 감사합니다. 나는 시도했다 :'before_create do | invoice | D = date_received d.advance ({: 일 => 2}) created_at> D invoice.received_state = 빨간색 다른 \t \t invoice.received_state = 녹색 \t 끝 \t 말 '만은 "정의를 얻을 수있는 경우 method '>'for nil –
@KatieM'before_create' 메쏘드에서 모든 속성은'self'로 접근해야합니다. 내 게시물을 업데이트했습니다 .. – Baldrick
다시 한번 감사드립니다. "self"로 모든 것을 바꿨습니다. received_state at null (null), 그리고 내가 보러 갈 때, true를위한 정의되지 않은 메소드를 말하고있다 : def received_state d = self.date_received d.advance ({일 => 2}) \t 다른 == 녹색 \t 단부 end' \t self.received_state 적색 self.created_at> D self.received_state 경우 == –