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