Postgresqlを使用するRails3.1.3では、datetimeとして属性を作成すると、そのクラスはActiveSupport::TimeWithZoneを使用します。ただし、これを説明できる人は誰でも:
user=User.first
user.update_attributes(:last_signed_in_at => Time.now) #True, but record isn't updated
user.update_attribute(:last_signed_in_at, Time.now) #True, and record is updated
user.last_signed_in_at = Time.now
user.save #True, and the record is updated
update_attributesは、検証をチェックするupdate_attributeとは異なります。失敗する唯一の理由は次のとおりです。
user.last_signed_in_at = ActiveSupport::TimeWithZone
Time.now.class = Time
それを整理できる人はいますか?