我有一个带有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