Ruby on rails 在不使用rails中的迁移的情况下更新DB架构
我正在寻找一个自动更新模式的命令,而不必编写迁移文件Ruby on rails 在不使用rails中的迁移的情况下更新DB架构,ruby-on-rails,ruby,database,schema,rake,Ruby On Rails,Ruby,Database,Schema,Rake,我正在寻找一个自动更新模式的命令,而不必编写迁移文件 例如,当我启动一个Java Hibernate应用程序时,通过一些配置,DB模式会自动生成和更新。据我所知,这在ActiveRecord中是不可能的,但如果您不介意更改ORM,您可以改为查看 使用DM,您可以在模型代码本身中定义模型的“属性”(attributes),然后只需运行rake db:automigrate即可更新数据库的模式,例如 class Blog property :title, String property
例如,当我启动一个Java Hibernate应用程序时,通过一些配置,DB模式会自动生成和更新。据我所知,这在ActiveRecord中是不可能的,但如果您不介意更改ORM,您可以改为查看 使用DM,您可以在模型代码本身中定义模型的“属性”(attributes),然后只需运行rake db:automigrate即可更新数据库的模式,例如
class Blog
property :title, String
property :body, Text
property :user_id, Integer, :required => true
end
有你可以
示例(使用sqlite,但其他适配器也是如此)
首先,正常启动:
require "sequel"
DB = Sequel.sqlite(DB_NAME)
# create an items table
DB.create_table :items do
primary_key :id
String :name
Float :price
end
# [....]
require "sequel"
DB = Sequel.sqlite('test.db')
# create an items table
DB.create_table :items do
primary_key :id
String :name
Float :price
end
稍后,您可以修改该表:
DB.add_column :items, :valid_from, Date
可以进行以下修改(可能还有更多):
- 添加列
- 添加索引
- 创建视图
- 下降柱
- 下降指数
- 升降台
- 下拉视图
- 重命名表
- 重命名列
- 设置\u列\u默认值
- 设置列类型
与
rake
结合使用,您可以执行以下操作:
require "rake"
require "sequel"
task :connect do
DB = Sequel.sqlite('test.db')
end
desc 'create an items table'
task :create_items => :connect do
DB.create_table :items do
primary_key :id
String :name
Float :price
end
end
task :add_dates_to_items => :connect do
#check if items exist is missing
DB.add_column :items, :valid_from, Date
end
备注:迁移有助于避免错误的模式修改顺序。通过迁移,您可以定义正确的顺序。实际状态已存储,您可以降级