Наследование нескольких таблиц, столбцы не доступны из подкласса

ОБНОВИТЬ:
изменение 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
Другие вопросы по тегам