2

Rails 3.2.3рельсы 3.2.3 STI, AR подклассы не унаследовавшие ассоциации/отражения

Вот пример, который меня смущает:

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

Итак, я понял, что происходит для меня. Я не совсем уверен, почему приложение загрузилось и запускалось без проблем, но потом дало мне эту проблему. Вот больше информации о моих моделях:

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 не бросает ошибку, она просто не полностью загружая класс лица до класса Женщины, я думаю. Здесь есть проблема с обоими классами, которые нужны другим для загрузки, прежде чем они смогут загрузить, но я не уверен, почему это привело к моей проблеме. Мне было бы интересно узнать больше. Но, возможно, это поможет кому-то испытать нечто подобное.

Смежные вопросы