【问题标题】:How can I update an entire table column如何更新整个表格列
【发布时间】:2013-04-30 20:40:10
【问题描述】:

我有一个 Micropost 表,其中包含 user_idsender_id 列(均为整数)。我刚刚添加了sender_id 列,默认情况下,现有表行的值为零。作为一次性的事情,我希望将所有 user_id 值复制并粘贴到已经存在的行的 sender_id 列中。需要某种迁移?

【问题讨论】:

    标签: ruby-on-rails ruby database


    【解决方案1】:

    您可以从 Rails 控制台执行此操作。

    Micropost.update_all("sender_id = user_id")
    

    【讨论】:

      【解决方案2】:

      我会在迁移中完成它,但由于你已经运行它,你可以直接在 Rails 控制台中完成它:

      Micropost.all.each do |m|
          m.update_attribute :sender_id, m.user_id
      end
      

      【讨论】:

      • 我不断为 micropost 类获取未定义的方法。
      • 糟糕。错过了.all
      【解决方案3】:

      如果它是一次性的,我建议您只运行一个 sql 命令来执行此操作。

      update micropost set sender_id = user_id;
      

      如果你必须通过 rails 来制作它,请在控制台中运行以下行,

      ActiveRecord::Base.connection.execute "update micropost set sender_id = user_id"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-30
        • 1970-01-01
        • 2021-02-08
        • 2018-06-26
        • 2015-06-25
        • 2023-03-22
        • 1970-01-01
        相关资源
        最近更新 更多