- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
使用 activerecord 使用 hstore 列更新多条记录的好方法是什么?现在我正在像这样循环、更新和保存:
time = Time.now.to_s
scoped_tasks.each do |task|
task.data[:last_checked] = time
task.save!
end
有什么方法可以用 update_all
查询来做到这一点吗?我见过的一种解决方案如下所示:
MyModel.update_all(:properties => ActiveRecord::Coders::Hstore.dump({'a' => 1}))
但这样做的问题是它会覆盖整个列,因此其他值会丢失。我也看到了这个:
MyModel.update_all("data = data || hstore('a', 'blah')")
但由于某些原因,我返回了 0
值。它看起来也只有在 hstore 为空时才有效。
最佳答案
我自己也遇到过同样的问题,下面是我如何解决它的:
MyModel.update_all([%(data = data || hstore(?,?)), 'a', 'new_value']))
解决此问题的核心是将 update_all 操作包装在 [] 和 %() 中。我仍在努力弄清楚 %() 是如何在 Postgre SQL 中定义 SET 的,所以如果有人有一个非常有帮助的解释。
在我的例子中,我实际上也删除了一个键(我真的想更新键名但保留值)。因此,如果有人遇到该问题,代码如下所示:
MyModel.update_all([%(data = delete("data",?)), 'a'])
我希望在同一个调用中执行这两个操作,但这在 SQL 中创建了一个非常奇怪的命令,其中第二个操作是作为 WHERE 子句的一部分而不是 SET 添加的。对我来说仍然有点黑魔法,但希望这有助于...
关于ruby - Rails update_all 与 hstore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19259749/
我的预订数据库和汽车数据库之间存在多对多关系,以下内容在我的预订 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
我是一名优秀的程序员,十分优秀!