我想知道在Rails迁移中向数据库表添加记录的首选方式是什么.我在Ola Bini的书(JRuby On Rails)上读到他这样做:

class CreateProductCategories < ActiveRecord::Migration

  #defines the AR class
  class ProductType < ActiveRecord::Base; end

  def self.up

    #CREATE THE TABLES...

    load_data
  end
  def self.load_data
    #Use AR object to create default data
    ProductType.create(:name => "type")
  end
end

这很好,很干净,但由于某些原因,在rails的最新版本上不起作用...

问题是,如何使用默认数据(如用户或其他数据)填充数据库?

谢谢

推荐答案

你可以用灯具来装那个.这意味着在某个位置有一个包含您想要插入的数据的YAML文件.

以下是我在我的一个应用程序中为此提交的变更集:

db/migrate/004_load_profiles.rb

require 'active_record/fixtures'

class LoadProfiles < ActiveRecord::Migration
  def self.up
    down()

    directory = File.join(File.dirname(__FILE__), "init_data")
    Fixtures.create_fixtures(directory, "profiles")
  end

  def self.down
    Profile.delete_all
  end
end

db/migrate/init_data/profiles.yaml

admin:
 name: Admin
  value: 1
normal:
 name: Normal user
  value: 2

Database相关问答推荐

MongoDB根据嵌套文档中的值匹配数组

为什么postgres枚举需要4个字节?

如何将使用模块创建的 Redis RDB 文件迁移到没有该模块的部署? (RedisStack 版本 7.2+ 中不再包含 RedisGraph)

任何用于存储过程的静态代码分析工具?

使用自动递增主键将 csv 导入 sqlite

android 应用程序与 web 服务通信的安全性

Mysql - 在所有数据库中查找表

免费的 SQL 比较工具

如何允许多个用户同时连接到我的 H2 数据库?

Oracle 和 SQL Server 中的 NVARCHAR 之间的区别?

什么是表前缀?

mysql,dump,数据库restore恢复

在 SQL SERVER 中监视 SQL 查询的进度

审计表:一个表或一个表的每个字段

Android Room:如何建模关系?

维护 mgo 会话的最佳实践

SQL Server 自动备份

如何使用 localdb 在 Code First 中查看数据库图

如何从多个表中 Select 不同的值

位图索引有何帮助?