Rails 3.2.3
以下是令我困惑的例子:
class Person < ActiveRecord::Base
has_many :toys
end
class Man < Person
end
class Woman < Person
has_many :cookies, foreign_key: person_id
end
然后发生这种情况:
Person.reflections.keys # [:toys]
Man.reflections.keys # [:toys]
Woman.reflections.keys # [:cookies]
请注意,我希望Woman.reflections.keys
为[:toys, :cookies]
此外,如果我这样做:
Person.new.keys # []
Man.new.keys # []
Woman.new.keys # NoMethodError: undefined method `association_class' for nil:NilClass
答案 0 :(得分:1)
所以我想出了发生了什么事。我不确定为什么应用程序加载并运行没有问题,但后来给了我这个问题。以下是我的模型的更多信息:
class Person < ActiveRecord::Base
DEFAULT_SUBCLASS = Woman # <------
has_many :toys
end
class Man < Person
end
class Woman < Person
has_many :cookies, foreign_key: person_id
end
Rails没有抛出错误,它只是没有在我认为的女人类之前完全加载Person类。这里有一个问题,两个类需要在加载之前加载另一个,但我不确定它为什么会导致我的问题。我很想知道更多。但也许这会帮助有经验的人。