Rails / ActiveRecord - наследование одной таблицы - переопределяющее поле типа - PullRequest
1 голос
/ 15 октября 2011

Возможно ли переопределить название этого столбца? Я изменяю некоторые части своих приложений на использование STI, и для этого используются другие поля. Я также предпочел бы, чтобы это было целое число.

Есть идеи?

Ответы [ 2 ]

7 голосов
/ 06 мая 2012

Согласно коду в ActiveRecord :: ModelSchema (3.2), метод set_inheritance_column устарел, и вы должны использовать self.inheritance_column = column

5 голосов
/ 15 октября 2011

В современных Rails вы бы использовали inheritance_column= (как отмечено панкреус ):

class M < ApplicationRecord
  self.inheritance_column = 'whatever'
  #...
end

В более старых версиях Rails (то есть, что было, когда этот ответ был изначально написан), вы бы Вы можете использовать [set_inheritance_column] [3], чтобы изменить имя:

Устанавливает имя столбца наследования для использования в данное значение, или (если значение nil или false) в значение, возвращаемое данным блоком.

Столбец все еще должен быть строкой (или text), так как AR захочет поместить туда имя класса :

Наследование одной таблицы

Active Record позволяет наследовать, сохраняя имя класса в столбце с именем «type» по умолчанию.

...