如何在Ruby on Rails中删除模型及其表?

时间:2010-10-14 20:55:25

标签: ruby-on-rails migration

我正在深入研究RoR,我需要删除模型及其表格,以及更新引用它的其他模型。我在google和SO上搜索过,我找到的最佳答案是this,但答案我不清楚。最终的共识是使用ruby script/destroy model方法然后“手动编辑可能包含这些已删除模型的refs的任何迁移”这是我不清楚的最后一部分。我想删除userprofile模型和表格的模型...

class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
        t.string :email
        t.string :password

      t.timestamps
    end
  end

  def self.down
    drop_table :users
  end
end

class CreateProfiles < ActiveRecord::Migration
  def self.up
    create_table :profiles do |t|
        t.string :name
        t.integer :user_id

      t.timestamps
    end
  end

  def self.down
    drop_table :profiles
  end
end

并更新引用它们的article模型和表格......

class CreateArticles < ActiveRecord::Migration
  def self.up
    create_table :articles do |t|
        t.string :title
        t.text :body
        t.datetime :published_at
        t.string :image

      t.timestamps
    end
  end

  def self.down
    drop_table :articles
  end
end



class AddUserIdToArticles < ActiveRecord::Migration
  def self.up
    add_column :articles, :user_id, :integer
  end

  def self.down
    remove_column :articles, :user_id
  end
end

我可以执行ruby script/destroy user然后调用self.down迁移中的article方法吗?如果是这样,我如何调用'self.down`方法以及按什么顺序?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

是的。只需用

删除它
ruby script/destroy model user
ruby script/destroy model profile

然后使用以下内容回滚数据库或self.down:

rake db:rollback

现在您可以安全地删除迁移文件。