Я должен обновить поле (названный updated_at
). Поле в MySQL имеет тип datetime
, и класс ActiveSupport::TimeWithZone
. Но даты являются строками как "10/17/2008"
. Я использовал "10/17/2008".to_date
(И я предназначаю .to_time
и .to_datetime
), и даже если в консоли класс ActiveRecord сохраняет успешно, поле в базе данных все еще является текущей датой.
Ладно ... давайте возьмем их по одному.
Во-первых, не рекомендуется устанавливать имя поля updated_at
, поскольку это «магическое» поле, которое автоматически заполняется Rails.
Если вы хотите отключить эту функцию, вы можете:
class Foo < ActiveRecord::Base
self.record_timestamps = false
end
в своем классе, но это также отключит поля created_at
.
Лучшим вариантом является добавление нового поля (например, my_updated_at
) в качестве даты в базе данных, и тогда Rails автоматически обработает преобразования, что означает, что следующий фрагмент будет работать:
Foo.new({:my_updated_at => "10/17/2008"})
Во-вторых, ответ о том, как разобрать строку в ActiveSupport :: TimeWithZone
:
ActiveSupport::TimeZone['UTC'].parse("10/17/2008")
, но я не думаю, что это поможет вам (конечно, измените UTC
на вашу текущую дату / время).