rails 3.2.3 STI,AR子类不继承关联/反射

时间:2013-09-12 21:27:05

标签: ruby-on-rails-3 rails-activerecord single-table-inheritance

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

1 个答案:

答案 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类。这里有一个问题,两个类需要在加载之前加载另一个,但我不确定它为什么会导致我的问题。我很想知道更多。但也许这会帮助有经验的人。