我正在阅读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
如何编辑更改方法以执行与上述上下方法相同的操作?到目前为止,我尝试使用up和down而不是self.up和self.down并使用相同的代码进行复制。那没起效。
谢谢!
答案 0 :(得分:6)
只需使用def change
内容更改def self.up
。
您可以通过在控制台运行rake db:migrate
来检查结果 - 它将创建表(self.up功能)和rake db:rollback
- 它将删除表(self.down功能)。< / p>
答案 1 :(得分:3)
up/down
的{{1}}迁移看起来像这样:
change
更改方法可以根据您提供的创建/更新信息自动确定所需的向下操作。它不是原始self.up / self.down方法的完全替代品,但是因为您采取的一些数据库操作Rails无法自动确定相应的up / down操作是什么。例如,如果您需要运行任意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
。
答案 2 :(得分:2)
使用更改更简单,迁移应该看起来像
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
答案 3 :(得分:1)