В rails 3.1 вы будете использовать update_column .
В противном случае:
В общем, самый элегантный способ обойти обратные вызовы следующий:
class Message < ActiveRecord::Base
cattr_accessor :skip_callbacks
before_save lambda { foo(publisher); bar }, :unless => :skip_callbacks # let's say you do not want this callback to be triggered when you perform batch operations
end
Затем вы можете сделать:
Message.skip_callbacks = true # for multiple records
my_message.update_attributes(:created_at => ...)
Message.skip_callbacks = false # reset
Или только для одной записи:
my_message.update_attributes(:created_at => ..., :skip_callbacks => true)
Если вам это нужно специально для атрибута Time
, тогда touch
сделает то, что упоминает @lucapette.