Rails生成模型 - 在DB:migrate之后更改模型名称

时间:2012-11-11 22:06:28

标签: ruby-on-rails ruby-on-rails-3

我使用以下方法创建了一个模型:

rails generate model SavingsItem

然后我跑了rake db:migrate

现在,我想将模型重命名为SavingsProduct

我做了一个rake db:rollback,然后直接进入我的迁移文件并更改了模型名称和表名。但是,当我再次运行rake db:migrate时,它会在我的数据库中创建正确的表名,但仍会创建savings_item.rb

为什么会这样?

这是我的迁移文件:

class CreateSavingsProducts < ActiveRecord::Migration
  def change
    create_table :savings_products do |t|
      t.string :name, :limit => 50
      t.string :description, :limit => 200
      t.decimal :price, :precision => 10, :scale => 2
      t.string :buy_url, :limit => 200
      t.string :image_url, :limit => 200
      t.integer :image_width, :limit => 11
      t.integer :image_height, :limit => 11
      t.timestamps
    end
  end
end

2 个答案:

答案 0 :(得分:1)

我不确定是否有办法重命名模型,但您可以简单地使用destroy来摆脱错误命名的模型。像这样:rails destroy model model_name

destroy删除由generate命令自动生成的所有文件。

答案 1 :(得分:1)

  

当我再次运行rake db:migrate时,它会在中创建正确的表名   我的数据库,但创建savings_item.rb

迁移只会改变数据库;它们不会创建或更改任何文件(schema.rb除外)。生成器是创建和更改文件的内容,包括迁移文件。

如果您已经生成了模型,则只需手动更改其名称即可。将class SavingsItem更改为class SavingsProduct,并将文件从savings_item.rb重命名为savings_product.rb