【发布时间】:2013-05-10 13:09:29
【问题描述】:
有没有一种方法可以使用您在模型中所做的更改来创建迁移?例如,我有 Foo 模型,其 bar 和 oof 属性已经保存在数据库中。我想将属性rab 添加到Foo。有没有办法将此属性添加到类并生成识别此更改的迁移?
我会在 Foo 模型文件中将 :rab 添加到 attr_accessible,这个神奇的函数会自动创建如下迁移:
class AutoMigrate < ActiveRecord::Migration
def change
add_column :foo, :rab, :string
end
谢谢。
这是我发现的另一个线程,其中包含更多信息 Rails - Generating migration script from model
看起来 DataMapper 可能是我正在寻找的解决方案,但我犹豫是否要从 ActiveRecord 迁移。
【问题讨论】:
-
我猜不是,此外,一个新的 db 字段可能是 attr_protected,但仅仅是一个实例变量可能是 attr_accessible。这不是标准
-
attr_protected和attr_accessible用于批量分配安全性。它们在 Rails 4 中消失了,所以我现在不会开始使用它们——而是使用强参数或许可程序(使用强参数),因为它们都在 Rails 3.1+ 中工作。 Rails 4 中包含强参数,因此如果使用 Rails 4,则不应将 strong_parameters 添加到 Gemfile。 -
并不是说不使用 DataMapper,但请阅读我的答案并通读 Rails 指南:guides.rubyonrails.org 您可以为您对数据库所做的现有事情创建迁移,但是您' d 如果使用 ActiveRecord(Rails 的标准 ORM),则需要在数据库的 schema_migrations 表中创建记录,表明它们已经运行。有一种更简单的方法可以做你想做的事,那就是
config.active_record.schema_format = :sql。
标签: ruby-on-rails rubygems database-migration