我有一個帶有date_received,created_at和received_state的發票模型。Rails 3 - 在創建記錄時比較日期
在創建記錄時,我想比較date_received和created_at以更新received_state。具體來說,如果created_at比date_received大2天以上,received_state應該等於紅色。所以,這樣的事情:
if created_at > date_received + 2 days
@invoice.update_attribute(:received_state, red)
else
@invoice.update_attribute(:received_state, green)
end
我知道有日期的字輔助方法,但不知道如何在這種情況下使用它們。感謝您的幫助。
更新:我試了下面。沒有錯誤,但記錄不會更新與任一條件:
if (:date_received - :created_at).to_i > 2
@invoice.update_attribute(:received_state, red)
else
@invoice.update_attribute(:received_state, green)
end
更新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結束端 '但得到一個「未定義方法'>'爲零 – 2012-04-20 19:14:26
@KatieM在'before_create'方法中,所有的屬性都應該用'self'來訪問,我已經更新了我的帖子 – Baldrick 2012-04-20 19:33:38
再次感謝我將所有內容都改爲「self」。 received_state at all(null),並且當我去查看它時,它說true爲true的未定義方法:TrueClass。 d.advance({:天=> 2}) 如果self.created_at> d self.received_state ==紅色 \t別的 \t self.received_state ==綠色 \t端 end' – 2012-04-20 19:46:16