0

这是我的代码:

class UserTopicVisit < ActiveRecord::Base
  belongs_to :user
  belongs_to :topic

  def self.log_last_user_topic_visit(user_id, topic_id)
    visit = UserTopicVisit.find_or_create_by_user_id_and_topic_id(user_id, topic_id)
    visit.update_attributes!(:last_visit => Time.now.to_formatted_s(:db))
  end
end

这是不言自明的。

问题是:我需要能够通过简单的 mysql 查询在没有事务的情况下更新对象属性。我怎样才能使用 activerecord 来完成呢?

4

2 回答 2

0

也许您正在寻找更新列

更新对象的单个属性,而不调用 save

  • 验证被跳过。
  • 回调被跳过。
  • 如果该列可用,updated_at/updated_on 列不会更新。
于 2012-06-01T13:56:24.627 回答
0

update_attributes使用事务,但奇怪的是,save不使用事务,所以如果你想要回调和所有没有事务的爵士乐,你可以这样做:

visit.last_visit = Time.now.to_formatted_s(:db)
visit.save!

在引擎盖下,update_attributes实际上只是调用attributes=then save

于 2015-04-06T18:53:32.727 回答