Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何从我的Rails模型中删除列?_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

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

Ruby on rails 如何从我的Rails模型中删除列?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我需要从我已经创建的rails模型中删除一些列,并且在该模型中有一些行条目。 怎么做?在rails中有详细修改模式的链接吗? 我使用的是rails版本3。要删除数据库列,必须生成迁移: script/rails g migration RemoveColumns 然后在self.up类方法中,删除列: def self.up remove_column :table_name, :column_name end 您可能还希望将它们添加回self.down类方法中: def self.do

我需要从我已经创建的rails模型中删除一些列,并且在该模型中有一些行条目。 怎么做?在rails中有详细修改模式的链接吗?
我使用的是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

关于这一点的说明更为详细。

如果您知道要删除的列,可以使用约定: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
class RemoveProjectdFromProjects
通过命令替代项作为
添加
,仅将
添加
更改为
删除

单列:

rails g migration RemoveColumnFromTable column:type
多列:

rails g migration RemoveColumn1AndColumn2FromTable column1:type colummn2:type

您不必使用Rails3指定
script/rails
<代码>rails g迁移移除列就足够了。这在rails 4中有变化吗?当我尝试使用你的例子时,它只生成了一个变更方法(没有向上/向下的方法)。@Dan-也许吧。我已经四年没试过了。3是我最后一次尝试这个。今晚晚些时候我会看一看,然后再做报告。经过更多的研究,看起来Rails 4中只应该有一个变更方法。remove_列现在采用的数据类型必须是它处理将列添加回的方式。@Dan-我应该提到,这个Q是正确的。为此标记为ruby-on-rails-3,因此可能需要一个新的Q&a,其中包含指向此Q&a的链接,以保持联系。这使得Q&a似乎有更多关于此主题的内容:。Power的回答提到了使用此方法的3与4中的差异: