Rails STI - могу ли я получить значение type непосредственно из db?
Я изменяю модель, чтобы она больше не использовала наследование одной таблицы. Я удалил подклассы, и я сделал миграцию, которая делает:
add_column :discounts, :name, :string
Discount.all.each do |discount|
discount.update(name: discount.type)
end
Это происходит со следующей ошибкой:
The single-table inheritance mechanism failed to locate the subclass: 'RetailerStaffFlatRate'
Вместо того, чтобы использовать discount.type
Могу ли я просто получить значение, хранящееся в БД, чтобы модель не вылетала?
1 ответ
В вашей родительской модели вы можете определить метод для их получения:
def self.types
unscoped.select(:type).distinct.pluck(:type)
end
Тогда просто используйте Discount.types
и вы получите массив с существующими типами.
ПРИМЕЧАНИЕ. При таком подходе перечисляются только типы, присутствующие в базе данных.