如何从我的Rails模型中删除列?

时间:2010-10-16 12:03:31

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

我需要从我已创建的rails模型中删除一些列,并在该模型中包含一些行条目。 怎么做?是否包含有关在rails中修改架构的详细信息的链接? 我正在使用rails版本3。

3 个答案:

答案 0 :(得分:58)

要删除数据库列,您必须生成迁移:

script/rails g migration RemoveColumns

然后在self.up类方法中删除列:

def self.up
  remove_column :table_name, :column_name
end

您可能还希望将它们添加回self.down类方法中:

def self.down
  add_column :table_name, :column_name, :type
end

Rails Guide为此提供了更多细节。

答案 1 :(得分:41)

如果您知道要删除的列,则可以使用约定:在命名迁移时删除..从..此外,您可以在运行迁移命令时包含列名称。

命令的形式:

rails g migration Remove..From.. col1:type col2:type col3:type

例如:

rails g migration RemoveProjectIDFromProjects project_id:string

生成以下迁移文件:

class RemoveProjectIdFromProjects < ActiveRecord::Migration
  def self.up
    remove_column :projects, :project_id
  end

  def self.down
    add_column :projects, :project_id, :string
  end
end

答案 2 :(得分:4)

通过命令替代Add,仅将Add更改为Remove

单栏:

rails g migration RemoveColumnFromTable column:type

多列:

rails g migration RemoveColumn1AndColumn2FromTable column1:type colummn2:type