ОБНОВЛЕНИЕ:
изменение table_name на self.table_name =, кажется, убедило рельсы использовать правильную таблицу.
Однако теперь я получаю эти странные ошибки
Mysql2::Error: Unknown column 'templates.deleted_at' in 'where clause': SELECT `objekts`.* FROM `objekts` WHERE (`templates`.`deleted_at` IS NULL)
ИСХОДНЫЙ ВОПРОС:
У меня есть шаблон и объект:
class Template < ActiveRecord::Base
def status; 0; end # Template doesn't have a status column, so define default
end
class Objekt < Template
table_name = "objekts" # there is a status column in this table
end
но когда я это делаю, Objekt.new.attributes
в консоли выводятся только атрибуты из объекта Template
и не перечисляются какие-либо из Objekt
.
Каждый столбец в Template
также доступен в Objekt
, но Objekt
имеет дополнительные 10 столбцов (в основном флаги).
что тут происходит? почему рельсы не подключают класс Objekt
к таблице objekts
?
has_many/belongs_to
вместо использования шаблона метода шаблона? Шаблон в данном случае больше похож на классbase
.Objekt
должно быть связано с таблицей. Соглашение о конфигурации. - person ChuckJHardy   schedule 05.06.2013composition over inheritance
. Не могли бы вы переместить методы из шаблона в модуль и включить/расширить их в Object по мере необходимости? Затем они оба могут наследовать отActiveRecord::Base
- person ChuckJHardy   schedule 05.06.2013