STI中具有相同的类名,具有不同的名称空间

时间:2013-11-18 08:30:11

标签: ruby-on-rails ruby ruby-on-rails-4 ruby-2.0

我有类似的东西

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的类名?

由于

1 个答案:

答案 0 :(得分:1)

文件结构本身根本无法定义命名空间。你需要相应地写出常量。

# models/a/x.rb
class A::X < A

# models/b/x.rb
class B::X < B

另外,在Rails 3中,没有必要定义/ app中任何文件的加载路径,不确定Rails 4是如何工作的,但我想它应该是类似的。如果是这样,你的最后一行也是不必要的。