Наследование модели Rails в формах

Я создаю систему отчетов для своего приложения. Например, я создал модель ReportKind, но, поскольку я могу сообщать о многом, я хотел создать разные группы типов отчетов. Поскольку у них много общего поведения, я пытаюсь использовать наследование.

Итак, у меня есть основная модель:

model ReportKind << ActiveRecord::Base
end

, созданная, например:

model UserReportKind << ReportKind
end

В моей таблице report_kinds есть столбец типа, а пока здесь все работает. Моя проблема в формах / контроллерах.

Когда я делаю ReportKind.new , моя форма строится с префиксом '* report_kind *'. Если получить UserReportKind , даже через ReportKind.find , форма создаст префикс user_report_kind.

Это приведет к беспорядку в контроллерах, поскольку иногда я есть params [: report_kind], иногда params [: user_report_kind] и т. д. для каждого другого наследования, которое я сделал.

Есть ли способ заставить его всегда использовать префикс report_kind? Также мне пришлось принудительно установить атрибут 'type' в контроллере, потому что он не получал значение непосредственно из формы, есть ли красивый способ сделать это?

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

6
задан Tiago 18 February 2011 в 23:23
поделиться