Rails 迁移更改与向上和向下方法



我正在阅读《Rails Test Prescriptions》一书,在设置过程中,它要求我将迁移文件更改为以下内容:

class ProjectUserJoin < ActiveRecord::Migration
  def self.up
    create_table :projects_users, :force => true, :id => false do |t|
      t.references :project
      t.references :user
      t.timestamps
    end
  end
  def self.down
    drop_table :projects_users
  end
end

似乎我在 Rails (4.0.0) 上使用的版本比这本书(2 或 3.x)更高,我的迁移文件如下所示:

class ProjectUserJoin < ActiveRecord::Migration
  def change
  end
end

如何编辑更改方法以执行与上述向上和向下方法相同的操作?到目前为止,我已经尝试使用向上和向下而不是 self.up 和 self.down 并复制相同的代码。它没有用。

谢谢!

只需更改def change def self.up内容即可。

您可以通过在控制台上运行 rake db:migrate 来检查结果 - 它将创建表(self.up 功能)和rake db:rollback - 它将删除表(self.down 功能)。

您的up/down迁移对于change如下所示:

class ProjectUserJoin < ActiveRecord::Migration
  def change
    create_table :projects_users, :force => true, :id => false do |t|
      t.references :project
      t.references :user
      t.timestamps
    end
  end
end

更改方法能够根据您提供的创建/更新信息自动确定所需的关闭操作。它不能完全替代原来的self.up/self.down方法,但是由于您执行的某些数据库操作,Rails无法自动找出相应的up/down操作是什么。 例如,如果您需要运行任意 SQL 语句execute-<<SQL ... SQL

处理更改更简单,迁移应如下所示

class ProjectUserJoin < ActiveRecord::Migration
def change
    create_table :projects_users, :force => true, :id => false do |t|
      t.references :project
      t.references :user
      t.timestamps
    end
  end
end

上下方法仍然有效,但他们称之为

旧式迁移

.您可能希望从 Rails Guide 中了解有关活动记录迁移的更多信息

相关内容

  • 没有找到相关文章

最新更新