Updating without auto timestamping


Is there a way to stop the automatic timestamping. I have a model that
has an updated_on field. Its great that it updates on save however
there is one operation i need to do that I dont want the updated_on
field to be set to the current time. Is there a way to stop this for
this one operation?


Iain Adams

YrClass.record_timestamps = false

do the deed

YrClass.record_timestamps = true


I tried this but get the error

NoMethodError in TopicController#show

undefined method `record_timestamps=' for #<Topic:0xb6b88204>

My code looks like this

@topic = Topic.find params[:id]
@post_pages, @posts = paginate :posts, :conditions=>["topic_id = ?",
@topic.id], :per_page=>6
@topic.viewed_by @m
@topic.increment 'views'
@topic.record_timestamps = false

Notice I said YrClass in my example. :wink:


you can also use @topic.update_without_timestamps

Iain Adams wrote:

fyi, update/create_without_timestamps are private methods and should be used with caution [if at all]. a recent patch on edge removed a private method and when someone wrote a ticket about this, david said:

"The method is indeed a protected method and nodoc’ed to boot. In other
words, an internal, implementational detail. But sounds like people are
dipping into the forbidden cookie jar regardless. [http://dev.rubyonrails.org/ticket/9086]

so I’d stick with the methodology i first mentioned. ymmv


My bad. I had simply noticed it before when scanning through methods()
and noticed that it did indeed work. This is great to know, thanks.

Russell Norris wrote: