我正在寻找一个自动更新架构的命令,而无需编写迁移文件。
例如,当我通过一些配置启动 Java Hibernate 应用程序时,数据库模式会自动构建和更新。
我正在寻找一个自动更新架构的命令,而无需编写迁移文件。
例如,当我通过一些配置启动 Java Hibernate 应用程序时,数据库模式会自动构建和更新。
据我所知,这对于 ActiveRecord 是不可能的,但如果您不介意更改 ORM,您可以查看DataMapper。
使用 DM,您可以在模型代码本身中定义模型的“属性”(属性),然后您可以简单地运行 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
可以进行以下修改(也许还有更多):
结合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
备注:迁移有助于避免模式修改的错误顺序。使用迁移,您可以定义正确的顺序。实际状态被存储,您可以降级。