我有两个模型Foo::Bar
和Bar
。 Foo::Bar
belongs_to Bar
。当您尝试调用@bar.bar
时会出现问题(在这种情况下,@ bar是Foo::Bar
的实例)。
如果您使用引号定义:class_name
,那么一切都按预期工作,但如果您不使用引号,那么您将返回Foo::Bar
实例而不是{ {1}}实例。
为何与众不同?这是Rails中的错误(我顺便使用Rails 4.0.0RC1)吗?
不起作用
Bar
作品
class Foo::Bar < ActiveRecord::Base
belongs_to :bar,
class_name: ::Bar
end
答案 0 :(得分:1)
为什么期望::Bar
能够正常工作?
当我查看documentation时,我发现:class_name
到处都是字符串。我没有看到像::Bar
这样的任何单一用法。
答案 1 :(得分:1)
好。我想我会有所不同。
Bar.to_s -> "Bar"
::Bar.to_s -> "Bar"
所以我认为rails正在做一个将你的:: Bar转换为Bar的to_s。 因此,最好在class_name中使用string来避免意外。