У меня есть отношение полиморф c в моем приложении для настраиваемых полей, подобных этому:
class CustomFieldValue < ApplicationRecord
belongs_to :custom_field_type
belongs_to :custom_field_valuable, polymorphic: true
end
class CustomFieldType < ApplicationRecord
has_many :custom_field_values
end
В основном таблица custom_field_type содержит несколько подробностей о типе поля (выбор, флажок и т. Д. c), а также столбец «model_type» для модели, к которой принадлежит настраиваемое поле.
Таблица custom_field_value содержит ожидаемые полиморфы c столбцы «custom_field_valuable_type» и «custom_field_valuable_id», которые работают нормально, но видят так как custom_field_value принадлежит custom_field_type, в котором уже хранится model_type, мне было интересно, есть ли способ избавиться от custom_field_valuable_type?
Я пытался переопределить «custom_field_valuable_type» с помощью
def custom_field_valuabkle_type
self.custom_field_type.model_type
end
Но это не работает, так как нет столбца для запроса.