ruby 在 rails 上:rails 上的比率 5?迁移错误中止
ruby on rails: ratyrate on rails 5? migration error aborted
经过长时间的中断后,我正试图回到 RoR,但在尝试 rails db:migrate
:
时出现错误
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:
Directly inheriting from ActiveRecord::Migration is not supported. Please specify the Rails release the migration was written for:
错误继续...
我认为是因为 gem ratyrate
。
在其中一个迁移文件中:
class CreateRatingCaches < ActiveRecord::Migration
def self.up
create_table :rating_caches do |t|
t.belongs_to :cacheable, :polymorphic => true
t.float :avg, :null => false
t.integer :qty, :null => false
t.string :dimension
t.timestamps
end
add_index :rating_caches, [:cacheable_id, :cacheable_type]
end
def self.down
drop_table :rating_caches
end
end
是因为rails 5 没有使用def self.up
/ def self.down
吗?而应该使用 def change
?
如果是这样,我可以将 def setf.up
更改为 def change
然后删除 def self.down
块吗?
除此之外,为什么在创建 table 时甚至有一个 def self.down
调用来删除 table?它不会被执行,只有当你 db:rollback
数据库吗?
谢谢
由于您继承自 ActiveRecord::Migration
,迁移已取消。
因此,您应该从 ActiveRecord::Migration[5.1]
继承并且迁移应该有效。将第一行更改为:
class CreateRatingCaches < ActiveRecord::Migration[5.1]
(5.1指定rails版本,相应修改,如ActiveRecord::Migration[4.2]
等)
有关它们不同方面的详细信息,请参阅官方指南中的this answer for more information about change vs. up/down in migrations or read this part。
经过长时间的中断后,我正试图回到 RoR,但在尝试 rails db:migrate
:
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:
Directly inheriting from ActiveRecord::Migration is not supported. Please specify the Rails release the migration was written for:
错误继续...
我认为是因为 gem ratyrate
。
在其中一个迁移文件中:
class CreateRatingCaches < ActiveRecord::Migration
def self.up
create_table :rating_caches do |t|
t.belongs_to :cacheable, :polymorphic => true
t.float :avg, :null => false
t.integer :qty, :null => false
t.string :dimension
t.timestamps
end
add_index :rating_caches, [:cacheable_id, :cacheable_type]
end
def self.down
drop_table :rating_caches
end
end
是因为rails 5 没有使用def self.up
/ def self.down
吗?而应该使用 def change
?
如果是这样,我可以将 def setf.up
更改为 def change
然后删除 def self.down
块吗?
除此之外,为什么在创建 table 时甚至有一个 def self.down
调用来删除 table?它不会被执行,只有当你 db:rollback
数据库吗?
谢谢
由于您继承自 ActiveRecord::Migration
,迁移已取消。
因此,您应该从 ActiveRecord::Migration[5.1]
继承并且迁移应该有效。将第一行更改为:
class CreateRatingCaches < ActiveRecord::Migration[5.1]
(5.1指定rails版本,相应修改,如ActiveRecord::Migration[4.2]
等)
有关它们不同方面的详细信息,请参阅官方指南中的this answer for more information about change vs. up/down in migrations or read this part。