Hol*_*lly 53 heroku rails-models rails-migrations ruby-on-rails-3
我有一个模型和一个桌子,我不再需要在我的应用程序中,我可以将它们留在那里,但我想删除它们以保持整洁.
我正在试图找出删除它们的最佳方法,而不是弄乱我的迁移和db/schema.rb文件以及它可能对我的生产环境产生的任何副作用,我的应用程序在Heroku上.我在我的本地机器和heroku上使用PostgreSQL.
到目前为止,我已经找到了两种方法,但我不确定哪种方法最好?
我想过要进入我的数据库并丢弃表然后销毁模型.
rails db
DROP TABLE table_name
\q
rails destroy model model_name
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我对此模型/表的迁移会发生什么?我有两个此模型的迁移,一个timestamp_create_modelname和一个add_attribute_to_table名称.
此方法也会更新db/schema.rb文件吗?
当我将应用程序推送到Heroku时,我怀疑模型将被删除但是表格将保留在原位,是否有一个heroku命令来删除表格.
我读到的另一种方法是生成一个新的迁移以删除表然后销毁模型.
rails generate migration drop_tablename
Run Code Online (Sandbox Code Playgroud)
然后更新以下文件:
db/migrate/timestamp_drop_tablename (根据Dan Wich的回答更新)
class DropTablename < ActiveRecord::Migration
def up
drop_table :tablename
end
def down
create_table :tablename do |t|
t.string :table_column
t.references :anothertable
t.timestamps
end
add_index :tablenames, :anothertable_id
end
end
Run Code Online (Sandbox Code Playgroud)
然后在终端:
rake db:migrate
rails destroy model model_name
rake db:migrate
git add .
git commit -m "removed table/model_name"
git push heroku master
heroku run rake db:migrate
heroku restart
Run Code Online (Sandbox Code Playgroud)
这似乎是最好的方法,但旧的迁移文件会发生什么?每次运行rake db:migrate时它们是否会保留并更新db/shema只能被db/migrate/timestamp_drop_tablename覆盖?
我很高兴尝试第二种方法,但希望有经验的人能够权衡并告诉我实现这一目标的方法.
Dan*_*ich 32
第二种方法是处理此问题的理想方法:迁移文件旨在表示数据库随时间的变化情况.较旧的迁移文件将保留在您的项目中(以防假设您想要回滚到旧版本),但Rails将不会运行它们,rake db:migrate因为它知道它们已经运行(基于数据库中的数据) schema_migrations表).
您的schema.rb将只更新一次,以反映您的数据库不再包含该表.
对您的代码进行一次小调整:您的迁移文件应该删除up方法中的表,并在理想情况下在down方法中重新创建它."up"表示您的迁移会使表格及时向前移动,如果回滚迁移,down则会运行该方法.
Mic*_*elZ 13
我知道这是一个老线程.通常,您不仅要删除模型,还要删除与该模型关联的路径,控制器和视图.要做到这一点,运行这些
rails g migration DropYourModel
rails destroy scaffold YourModelName
Run Code Online (Sandbox Code Playgroud)
编辑您的迁移文件drop_table,然后运行
rake db:migrate
Run Code Online (Sandbox Code Playgroud)
如果模型恰好在命名空间中定义,例如admins,请将第一个命令替换为
rails destroy scaffold admins/YourModelName
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29539 次 |
| 最近记录: |