【发布时间】:2011-04-26 07:35:08
【问题描述】:
我需要从我已经创建的 Rails 模型中删除几列,并在该模型中有一些行条目。 怎么做?任何链接都包含在 rails 中修改模式的详细信息? 我使用的是 Rails 版本 3。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3
我需要从我已经创建的 Rails 模型中删除几列,并在该模型中有一些行条目。 怎么做?任何链接都包含在 rails 中修改模式的详细信息? 我使用的是 Rails 版本 3。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3
要删除数据库列,您必须生成迁移:
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 对此进行了更详细的说明。
【讨论】:
script/rails。rails g migration RemoveColumns 就足够了。
如果您知道要删除的列,则可以使用约定:Remove..From.. 命名迁移时。此外,您可以在运行迁移命令时包含列名。
命令的形式:
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
【讨论】:
通过Add替代命令,只需将Add更改为Remove:
单列:
rails g migration RemoveColumnFromTable column:type
多列:
rails g migration RemoveColumn1AndColumn2FromTable column1:type colummn2:type
【讨论】: