Rails - наследование и маршрутизация в одной таблице - PullRequest
0 голосов
/ 22 августа 2011

Я реализую наследование одной таблицы, но у меня возникли проблемы с маршрутизацией.У меня есть два класса, Гамма и Бета, и оба унаследованы от Альфы.Я знаю, что если я хочу использовать Alpha в качестве контроллера в отличие от отдельных контроллеров для Beta и Gamma, я могу следовать инструкциям здесь для установки ресурса по умолчанию для другого контроллера.

Однакоя хочу, чтобы некоторые методы обрабатывались центральным альфа-контроллером (например, редактирование и обновление), а другие методы - бета- и гамма-контроллерами подкласса.Как я могу указать, какие методы должны указывать на контроллер Alpha, а какие должны быть обработаны Beta и Gamma?

1 Ответ

0 голосов
/ 22 августа 2011

Используйте наследование с вашими контроллерами.Реализуйте свои функции редактирования и обновления в классе AlphaController, а затем наследуйте от этого класса в ваших BetaController и GammaController классах, где вы затем реализуете свои другие функции.

class AlphaController < ActionController::Base

   def edit
      ...
   end

   def update
      ...
   end

end

class BetaController < AlphaController

   def index
      ...
   end

end

Обратите внимание, что этосделает ваши URL ... / бета / редактировать и ... / бета / обновить.

Вы можете использовать только views / alpha / edit.html.erb в качестве частичного представления, а затем визуализировать страницу альфа-представления в качестве частичного в ваших бета / гамма-представлениях.

Помните, что даже если вы храните объекты в одной таблице Alpha, у вас все еще есть два класса в вашей модели, Beta и Gamma, и вы должны обращаться с ними как с такими.

...