Rails — Два контроллера или добавление действий?

StackOverflow https://stackoverflow.com/questions/786416

  •  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, а не повторять код.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top