В Rails 3.1.3 с Postgresql, если вы создаете атрибут как дату и время, его класс с ActiveSupport :: TimeWithZone. Тем не менее, любой, кто может объяснить это:Rails: обновление ActiveSupport :: поля TimeWithZone с помощью Time by update_attributes fail
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
Любой, кто имеет возможность разобраться с этим?
У вас есть 'attr_accessible' в вашей модели пользователя? – PeterWong
Большое спасибо, чувак. attr_accessible: указывает белый список атрибутов модели, которые могут быть заданы с помощью массового присвоения, такие как новые (атрибуты), update_attributes (атрибуты) или атрибуты = (атрибуты) – aquajach
Так что это устраняет вашу проблему :)? – PeterWong