ruby-on-rails - Rails : migrating production database, 需要为每个现有用户创建新数据

标签 ruby-on-rails database database-migration

我的 Ruby on Rails 应用程序中有一个生产数据库,其中包含用户和其他内容。现在,在实现新功能时,我需要为每个现有用户创建一些新数据。有什么聪明的方法可以做到吗?也许是 Rake 脚本?

更多详细信息:

我有一个用户表。现在我添加了书签表。这个想法是,默认情况下每个用户都有 5 个带有预填充数据的书签。对于新用户来说很容易做到,但现有用户呢?在用户登录时创建数据是一种选择,但感觉有点脏。

谢谢!

最佳答案

我喜欢使用 rails runner 来完成这样的一次性脚本,它允许您在加载了 Rails env 的情况下轻松运行脚本。 。

我建议使用activerecord-import如果您有很多用户,可以加快速度。

我们可以在脚本目录中创建一个名为 make_bookmarks.rb 的脚本,如下所示:

require 'activerecord-import'

bookmarks = []
User.all.each do |user|
    ["value1","value2","value3","value4","value5"].each do |value|
        bookmarks << user.bookmarks.new(:col => value)
    end
end

# import the bookmarks all with bulk sql = much faster
Bookmark.import bookmarks

然后运行它rails runner script/make_bookmarks.rb

关于ruby-on-rails - Rails : migrating production database, 需要为每个现有用户创建新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6497656/

相关文章:

jquery - 在 Rails 3 中使用 jQuery Ajax 查询数据库

ruby-on-rails - 处理 Rails ActionController::BadRequest

MySQL - 不重复行的 INSERT(不通知 PK)

android - 从 json 文件创建/更新 SQLite 数据库

postgresql - 即使数据库版本匹配,如何强制 FluentMigrator 运行迁移

ruby-on-rails - 为什么 Rails 预编译任务会执行非摘要 Assets

ruby-on-rails - cucumber 中的http基本身份验证测试

database - 有没有一种数据库密集度较低的方法可以从我的扩展 Django 站点模型中获取数据?

用于 EF 核心中数据迁移的 MongoDbContext?

ruby-on-rails - t.belongs_to 和对 postgresql 数据库的影响