Rails — Два контроллера или добавление действий?
-
16-09-2019 - |
Вопрос
Разработка веб-приложения с разделом администратора и общедоступным разделом.Такое ощущение, что наличие общедоступного контроллера только для «индекса» и «показа» немного избыточно.Все предложения, которые я прочитал, предполагают пространство имен для администратора, и это нормально.Мне просто интересно, нужен ли мне один контроллер с действием добавления, скажем, «list_public» или что-то в этом роде.
Я новичок в Rails, так что, возможно, меня просто ничего не беспокоит.Мне просто не нравится идея, что все эти контроллеры, представления и помощники с одинаковыми именами разбросаны по каталогам моих проектов.
Кто-нибудь имеет какое-либо представление об этом?Заранее спасибо.
Решение
Я бы сказал, что лучшим решением будет наличие обоих контроллеров (одного общедоступного и одного администратора).
Теперь вы можете сделать так, чтобы оба контроллера вызывали один и тот же метод, который выполняет соответствующие действия в действиях.
class MyController < ApplicationController
def show
MyModel.do_all_sorts_of_stuff
end
end
class Admin::MyController < ApplicationController
def show
MyModel.do_all_sorts_of_stuff
# Admin only stuff goes here
end
end
Другие советы
Как сказал Мэтт, вы также можете сделать это:
class MyController < ApplicationController
def show
MyModel.do_all_sorts_of_stuff
end
end
class Admin::MyController < MyController
def show
super
# Admin only stuff goes here
end
end
Это означает, что вы можете просто сосредоточиться на более специализированных случаях для Admin::MyController, а не повторять код.