2

导轨 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
4

1 回答 1

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 没有抛出错误,只是在我认为的 Woman 类之前没有完全加载 Person 类。这里有一个问题,两个类都需要另一个类才能加载,但我不确定为什么会导致我的问题。我很想了解更多。但也许这会帮助遇到类似情况的人。

于 2013-09-12T23:21:34.533 回答