我正在阅读《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 中了解有关活动记录迁移的更多信息