如何在 Rails 迁移中将列(包含内容)移动到另一个表?

2023-12-22

我需要将一些列从一个现有表移动到另一个表。如何使用 Rails 迁移来完成此操作?

class AddPropertyToUser < ActiveRecord::Migration
  def self.up
    add_column :users, :someprop, :string
    remove_column :profiles, :someprop
  end

  def self.down
    add_column :profiles, :someprop, :string
    remove_column :users, :someprop
  end
end

上面只是创建了新列,但值保留为空......

我想避免登录数据库来手动更新表。

如果有一种方法可以以编程方式移动列值,那么性能特征是什么?是逐行更新还是有办法批量更新?


我最终使用了此迁移(经过测试,它有效,并且成功回滚):

class AddPropertyToUser < ActiveRecord::Migration
  def self.up
    add_column :users, :someprop, :string
    execute "UPDATE users u, profiles p SET u.someprop = p.someprop WHERE u.id = p.user_id"
    remove_column :profiles, :someprop
  end

  def self.down
    add_column :profiles, :someprop, :string
    execute "UPDATE profiles p, users u SET p.someprop = u.someprop WHERE p.user_id = u.id"
    remove_column :users, :someprop
  end
end

我喜欢它,因为它避免了大型数据库上的逐行更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Rails 迁移中将列(包含内容)移动到另一个表? 的相关文章

随机推荐

  • 如何从外部命令行调用可可应用程序?

    我想使用带有参数的命令行来调用我的cocoa应用程序 但是在我的cocoa应用程序中 如何接收参数 这个参数是一个文件路径 非常感谢 整洁的事情 使用NSUserDefaults 如果你这样做 MyCocoaApp argument pat
  • 如何从 JBuilder 视图委托给模型的 to_builder 方法?

    假设我有一个 Person 类和一个 Gang 类 class Person belongs to gang attr accessible name secret def to builder Jbuilder new do app pe
  • Grails:使用 Spring Security 插件进行 Commentable 的用户评估器

    我正在尝试将可评论插件与 Spring Security 一起使用 我无法写出正确的 grails commentable poster evaluator 我尝试了 User get springSecurityService princ
  • 无法在 Chart.js 中设置全局选项

    我正在使用以下代码在 Chart js 中设置全局选项 Chart defaults global animationSteps 30 tooltipCornerRadius 0 var ctx document getElementByI
  • 将动态代码添加到 Perl 应用程序的最佳方法

    我知道这个问题的具体实例之前已经得到回答 如何在不使用 eval 的情况下动态包含 Perl 模块 https stackoverflow com questions 1917261 how can i dynamically includ
  • 替换测试中的特定模块

    我正在使用 Jest 测试我的 React Redux 应用程序 作为 API 调用的一部分 我正在导入一个 fetch 模块cross fetch 我想覆盖或替换它fetch mock 这是我的文件结构 Action js import
  • Java 中的 WebSockets 生产就绪服务器?

    EDIT 删除了对 C 的引用 因为唯一接受的答案是关于 Java 的 如果有人需要有关 C 中 websocket 服务器实现的信息 请提出一个新问题 您知道用 Java 创建 WebSockets 服务器的 生产就绪 框架吗 我找到了一
  • 它是什么意思,或者Cg==是什么

    有人可以告诉我什么吗Cg 意思是 我只知道它与 Base64 有关 我已经搜索过 但我仍然没有正确的答案或不知道它是什么 而且我对base64没有太多了解 Cg 是最新位置的换行符的base64编码 所以如果你想编码ABC你会得到QUJD
  • 毕加索可以帮我排队吗?

    关于毕加索的行为 有一个我不知道的关键点 想象一下 您正在显示包含十个项目的幻灯片 比如说 他们每人在屏幕上停留十秒钟 理想的行为是这样的 在幻灯片放映开始时 我只需执行以下操作 picasso get url1 picasso get u
  • Git 返回“无法运行重新打包”和“膨胀返回”错误

    我遇到了存储在 GitLab 上的 Git 存储库的问题 这似乎是一个仅影响此特定存储库的存储库问题 因为 GitLab 上托管的所有其他项目都工作正常 我似乎可以亲自使用 GitKraken 推送 拉取和签出分支 但是当我尝试从 Git
  • Alembic 可以自动生成列更改吗?

    我能够使用alembic autogenerate用于添加 删除列时 但是 当我想将 url 列从 200 个字符修改为 2000 个字符时 它不会检测到更改 我如何制作 Alembic 使用 SQLAlchemy 检测更改并自动生成模型各
  • 如何从java中的字符串中获取正确的阿拉伯字符(正确的形式)?

    我试图计算java中阿拉伯字符串中字符的宽度 但有时我无法获得正确的字符 如果您不知道阿拉伯字符可以根据它们在单词中的位置进行连接 并且每个变体都有不同的十六进制代码 https en wikipedia org wiki Arabic s
  • 在 Silverlight 3.0 中结合 .NET RIA 服务和 MVVM

    在 Silverlight 3 0 中使用 NET RIA 服务和 MVVM 时 RIA 服务中的元数据类型与 MVVM 模式中的 ViewModel 之间有区别吗 这些是同一件事还是应该分开 元数据类型是部分实体类的密封内部类 那里似乎没
  • Facebook JavaScript SDK 在 FB.login 调用后不会在 chrome 中设置访问令牌 cookie

    我正在使用 Facebook JavaScript SDK 来实现我的网站的登录 我已经可以在 Safari 和 Firefox 上使用它 但不能在 Chrome 上使用 调用 FB login 方法后 我可以从 Facebook 检索访问
  • PCL 中的 xamarin securestring 等效项

    SecureString 与 PCL 不友好 我知道这个问题可以使用依赖注入来解决 但我不想这样做 而是想在 PCL 中使用与 SecureString 等效的东西 但到目前为止我还找不到任何其他类或框架 System Security 几
  • protobuf-net 枚举序列化

    为了使用 protobuf net 序列化枚举 需要做什么 当序列化具有枚举属性的类时 我收到以下错误 如果从属性声明中删除 DataMember 属性 则它可以正常工作 System InvalidOperationException 仅
  • 仅使用互斥锁实现读/写锁?

    我试图仅使用互斥锁来实现读 写锁 仅供学习 正当我以为我已经涵盖了所有极端情况 因为程序可以处理各种组合 时 我意识到 我忽略了一个事实 因为它在 ubuntu 中工作 互斥体应该由线程的所有者释放 下面是我的实现 class rw loc
  • 突出显示组合框中的特定项目

    我有一个场景 我用模板名称填充组合框 在这些模板中 有一个是默认模板 我想在填充组合框时突出显示默认模板名称 以便用户知道其中哪一项是默认的 可以这样做吗 如果是的话怎么办 我正在使用 C 2 0 中的 Windows 窗体 这在一定程度上
  • MvvmCross Android - 按钮命令的relativesource绑定的替代方案

    I have a list of items bound to a MvxBindableListView with a MvxItemTemplate I usually have 4 items in my list bound to
  • 如何在 Rails 迁移中将列(包含内容)移动到另一个表?

    我需要将一些列从一个现有表移动到另一个表 如何使用 Rails 迁移来完成此操作 class AddPropertyToUser lt ActiveRecord Migration def self up add column users