Afaik список всех Tenderables
, в смысле вещей, к которым может быть прикреплен Tender
, невозможно построить из базы данных или структуры модели. В базе данных вы сможете найти все Tenderable
, к которым прикреплен Tender
, но не простым способом (подумайте об объединении запросов для каждого tenderable_type
).
Но основное свойство полиморфного отношения в действительности заключается в том, что к нему может быть присоединен любой объект, поэтому вам придется самостоятельно управлять полным списком объектов, которые могут иметь тендер.
Я не совсем уверен, почему вы этого хотите, но вы должны объединить Sound.all
и Stage.all
, и какая бы таблица ни стала позже.
Теперь, когда я пишу это, я думаю: чтобы объединиться, эти таблицы должны быть очень похожи. Если это так, в вашем случае вам может потребоваться ввести объект Tenderable
для реального использования STI. Для того, что вы хотите прямо сейчас, это было бы лучшим решением.
Что бы ни было Tenderable
должно поместиться в одной таблице с типом (Звук, Сцена, ...), и тогда вы получите нормальное отношение к Tenderable. Сцена или Звук наследуются от Tenderable. Затем вы можете легко выбрать все Tenderables или все звуки / сцены отдельно.
Надеюсь, это поможет.