- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要重写 Rails(事件记录)update_all
方法,以便它也始终更新 updated_at
字段。我应该如何实现这一目标?
最佳答案
将以下代码放入文件/config/initializers/update_all_with_touch.rb
class ActiveRecord::Relation
def update_all_with_touch(updates, conditions = nil, options = {})
now = Time.now
# Inject the 'updated_at' column into the updates
case updates
when Hash; updates.merge!(updated_at: now)
when String; updates += ", updated_at = '#{now.to_s(:db)}'"
when Array; updates[0] += ', updated_at = ?'; updates << now
end
update_all_without_touch(updates, conditions, options)
end
alias_method_chain :update_all, :touch
end
每当您使用 update_all
时,它会自动添加参数 :updated_at => Time.now
。
解释:
此代码段使用 alias_method_chain
覆盖 update_all
的默认值:
alias_method_chain :update_all, :touch
方法update_all
被我定义的方法update_all_with_touch
替换,原来的update_all
重命名为update_all_without_touch
。新方法修改了upgrades
对象注入(inject)updated_at
的更新,接下来调用原来的update_all
。
关于ruby-on-rails - 覆盖 rails update_all 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19076886/
我的预订数据库和汽车数据库之间存在多对多关系,以下内容在我的预订 Controller 中并被路由到帖子。 def reserveConfirm pick_time = params[:pick_y]
我正在尝试为我的所有用户更新“allowed_ips”字段,但它没有像我预期的那样工作。 'allowed_ips' 是一个带有 ip 地址的字符串。 User.where(role: 1).upda
我感兴趣是否可以在 update_all 方法中使用对象属性作为值。 假设我们有关系 Article,它具有属性 part1 和 part2。现在我想用 part2 的值更新与 Article 相关的
我感兴趣是否可以在 update_all 方法中使用对象属性作为值。 假设我们有关系 Article,它具有属性 part1 和 part2。现在我想用 part2 的值更新与 Article 相关的
我有两个模型,它们之间的关联是has_and_belongs_to_many。我需要重构代码,因为它会导致 n + 1 个查询。 问题:n+1 个查询 1。任务 class Task 2。用户
我有这个迁移任务: owner = Owner.first Factory.update_all(original_owner: owner) 它返回一个错误: ActiveRecord::State
我在 Rails 中的小服务 class ReadUserService def self.read_users(count) users = Users.inactive.limit(c
我正在使用 update_all 直接更新数据库中的特定记录。我在解析 csv 文件的脚本中执行此操作。我知道 update_all 返回一个关于更改了多少行的整数。有些行返回 1,有些行返回 0,这
假设我有一个模型: class Result < ActiveRecord::Base attr_accessible :x, :y, :sum end 而不是做 Result.all.find_
这与以下内容隐约相关: How to Update all Dates in a Table 但前提是你真的用力眯眼。 第 1 部分 - 我知道 SQL 可以根据涉及同一表中其他列的公式更新表中的一列
所以我有一个 update_all 查询,如下所示: Task.where(...).update_all('position = position - X, parent_id = Y') 我想用整
RoR 中有 update_all 方法 如果 update_all 失败,它会返回什么?它会引发异常吗? 例如: ActiveRecord::Base.transaction do users
根据 Rails 文档 here和 here , 使用 update_all不执行以下操作 - 它跳过验证 它不会更新 updated_at字段 它默默地忽略 :limit和 :order方法 我正在
我有一个付款表,我希望能够同时更新所有 date_of_payment 字段,即使用相同的日期。 在我看来,我有以下几点 'form_for_all', method: :put do %>
这是我在 Controller 中的功能: def sort params[:state].each_with_index do |id, index| State.update_all(
我想使用事件记录的单个查询来更新多行。我不必使用 update_all 因为它会跳过验证。有什么方法可以在 Rails Active Record 中做到这一点吗? 最佳答案 如果您想更新多个记录而不
我的 after_commit 设置如下。 class MyModel < ActiveRecord::Base after_commit { Rails.logger.info ("commit
我目前正在做一个小项目,我想更快地为我的数据库播种。我将一个名为“grand_total_points”的新列迁移到我的用户表中。所以最初我使用的是这段代码。 user = User.all user
我的 mysql 表中有一列名为 download_count,类型为 int。 现在我想使用 update_all 用一些值更新一些字段,同时增加 download_count。 我试过以下语法:
使用 activerecord 使用 hstore 列更新多条记录的好方法是什么?现在我正在像这样循环、更新和保存: time = Time.now.to_s scoped_tasks.each do
我是一名优秀的程序员,十分优秀!