STI中的相同类名称,具有不同的名称空间
-
22-12-2019 - |
题
我有这样的东西
class A < ActiveRecord::Base
# Parent class
end
class B < ActiveRecord::Base
# Parent class
end
# models/a/x.rb
class X < A
end
# models/b/x.rb
class X < B
end
# application.rb
config.autoload_paths += Dir[Rails.root.join('app', 'models', '{**}')]
.
我需要引用x :: b,但仍然引用了a的命名空间的x。无论如何都可以实现这一目标,或者我只需要更改X的类名?
感谢
解决方案
文件结构本身无法定义名称空间。你需要相应地编写常量。
# models/a/x.rb
class A::X < A
# models/b/x.rb
class B::X < B
.
此外,在Rails 3中,不需要定义内部/应用程序内的任何文件的加载路径,不确定Rails 4如何工作,但我猜它应该是类似的。如果是这样,你的最后一行也是不必要的。 不隶属于 StackOverflow