【问题标题】:update_all in rails - updating multiple rows using values from those rowsrails 中的 update_all - 使用这些行中的值更新多行
【发布时间】:2011-05-26 03:04:24
【问题描述】:

在轨道 2.3.11

我正在尝试使用每个不同行中不同列的值更新表中的多行(具体来说,我正在使用 rails 迁移将时间戳添加到已经存在的表中)。

起初我认为 update_all 可能会起作用,但它似乎仅用于更新具有相同值的多行。

我求助于使用 SQL 语句来获取我想要的内容(日期是已经存在的列,我将其用作时间戳的初始值):

execute <<-SQL
  UPDATE tablename SET created_at = date;
SQL

有更好的“rails 方式”吗?

【问题讨论】:

    标签: sql ruby-on-rails migration


    【解决方案1】:

    您应该能够引用update_all 中的另一个字段。您的问题很可能是 date 是 SQL 关键字。

    看看这是否有效:

    Model.update_all('tablename.created_at = tablename.date')
    

    如果不是,您可能需要引用日期,但在不同的数据库中会有所不同。

    MySQL:

    Model.update_all('`created_at` = `date`')
    

    SQLite:

    Model.update_all('"created_at" = "date"')
    

    【讨论】:

      猜你喜欢
      • 2011-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-03
      • 1970-01-01
      • 2013-03-08
      相关资源
      最近更新 更多