Ассоциация моделей управления классами "необычным способом" - PullRequest
1 голос
/ 03 мая 2011

Я использую Ruby on Rails 3, и у меня есть класс List и некоторые другие дочерние классы, которые "составляют" этот List "необычным способом". То есть у меня есть модель List со следующими атрибутами:

# LIST ATTRIBUTES
id       : integer
kind_of  : string
class_id : integer

kind_of значениями могут быть "школа", "дом", ... и для каждого kind_of у меня есть класс ListSchool, ListHouse, ... * class_id относится к первичному ключу дочернего класса kind_of "школа", "дом", ... (поэтому я могу иметь несколько равных значений для class_id, но каждое из них относится к определенному классу ListSchool, ListHouse, .. в зависимости от значения kind_of.

В нескольких словах Я хотел бы сослаться на уникальный класс (класс List) , чтобы охватить все виды дочерних классов (ListSchool, ListHouse, ...) на основе значения атрибута родительского класса (kind_of класса List).

Как я могу написать код ассоциации, чтобы связать эти модели (возможно, используя :conditions => "kind_of = 'school'", :conditions => "kind_of = 'house'", ... в операторе ассоциации has_one) ? Что вы посоветуете при таком подходе «деления классов»?

1 Ответ

0 голосов
/ 03 мая 2011

Звучит очень похоже на то, что вы ищете наследование в единой таблице (STI).Rails поддерживает это из коробки;все, что вам нужно сделать, это определить столбец type в классе List, а затем наследовать ListSchool и ListHouse от List.Нет необходимости в столбцах kind_of или class_id с STI.

Поиск в Интернете по запросу 'rails sti' обнаруживает хорошие ресурсы, включая этот вопрос StackOverflow .

...