0

This post описывает мою проблему очень хорошо, но ответ на этот пост предполагает, что вы используете однонаправленное наследование (STI) для подклассов. В моем случае подклассы SomeProf имеют свои собственные таблицы, и поскольку столбец _type хранит имя класса суперкласса, это не работает. В моем эквиваленте SomeDeepProf1 я заявил, что self.table_name = 'some_other_table', и я бы не хотел использовать STI, поскольку подклассы моего эквивалента SomeProf имеют очень разные атрибуты.Rails Полиморфные ассоциации без STI

Любое предложение о том, как это решить?

ответ

0

Прямо сейчас я использую следующий обходной путь для решения этой проблемы в SomeDeepProf1 классе: before_create :set_poly_type_to_class_name ... def set_poly_type_to_class_name self.profile_type = self.profile.class.name end

+0

К сожалению, это не работает весь путь ... Кажется, это класс 'SomeDeepProf1', что думают' profile_type 'должен быть' SomeProf', а не 'SomeDeepProf1'. В моей модели у меня есть has_many: через отношение из 'SomeProf'class, и если я попытаюсь перейти от' SomeDeepProf1' к этому has_many: через отношение, запрос будет '[" profile_type "," SomeProf "]'. Как я могу изменить запрос, чтобы проверить 'SomeDeepProf1' на' SomeProf'? – ehannes

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