Наследование нескольких таблиц, столбцы не доступны из подкласса
ОБНОВИТЬ:
изменение 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
Таблица?
1 ответ
Решение
Ссылаясь на комментарии выше, когда я имею в виду композицию, а не наследование, я думал о чем-то вроде этого...
class Objekt < ActiveRecord::Base
include Template
def status
self.random_column_name || super
end
end
module Template
def status
0
end
end