最近尝试把公司的项目升级到 rails 4 去,结果就各种蛋疼了 有一张 STI 表上的的错误不知道怎么办了,求各路大神指点啊 目录结构
+-- Models |---+-- gacha.rb |---+-- gacha |------+-- a.rb |------+-- a |----------+-- b.rb |----------+-- b |--------------+-- d.rb |----------+-- c.rb |----------+-- c |--------------+-- d.rb |----------+-- d.rb
gacha.rb
class Gacha < ActiveRecord::Base
end
a.rb
class Gacha::A < Gacha
end
b.rb
class Gacha::A::B < Gacha::A
end
b/d.rb
class Gacha::A::B::D < Gacha::A::B
include Gacha::A::D
end
c.rb
class Gacha::A::C < Gacha::A
end
c/d.rb
class Gacha::A::C::D < Gacha::A::C
include Gacha::A::D
end
d.rb
module Gacha::A::D
def is_d?
true
end
end
上面的代码在 3.2.16 里面还没事,一升级到 4 就报错了:Gacha::A::B::D 和 Gacha::A::C::D 只能认识一个,第二个就会报
NoMethodError: undefined method ‘decorate_columns' for Gacha::A::D:Module
也就是说第二个变成了 Module 而不是正常的 Gacha 类,试了一下把 Module 的名称换一下就没事 (Gacha::A::D => Gacha::A::X 之类的,不和 b/d.rb,c/d.rb 中的 D 重名就没事),不过总归是不爽,有什么彻底的解决方法吗?