2015-01-07 5 views
0

Я новичок в Ruby on Rails, я работаю над существующим проектом, пытающимся добавить новые функции. Я создал модель, используя:Rails - изменить базовый класс контроллера

rails generate model PublisherOrg owner:string 

я создал контроллер с помощью:

rails generate controller admin/publisher_orgs 

Затем в файле маршрутов, я добавил следующее:

namespace :admin, path: '/admin' do 
    root to: 'dashboard#index' 

    resources :carriers 
    resources :publisher_orgs 
end 

Проблема, что я что созданный файл контроллера начинается с

Admin::PublisherOrgsController < ApplicationController 

Для других контроллеров, однако, как

Admin::CarriersController < Admin::BaseController 

Наследование отличается. Проблема в том, что некоторые из методов не видны для PublisherOrgsController.

После изменения файла контроллера вручную, чтобы начать с:

Admin::PublisherOrgsController < Admin::BaseController 

ошибка «неизвестные методы» будут решена.

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

Заранее спасибо.

+0

Вот и все. Скорее всего, 'Admin :: BaseController' наследует от' ApplicationController' в любом случае. – ptd

ответ

0

После этого полностью изменить базовый класс контроллера. Я даже думаю, что это единственный способ использовать привилегии наследования на контроллерах, поскольку, насколько я знаю, нет возможности разрешить это в вызове «rails g controller».

Всегда помните, что рельсы часто выглядят как магия, но глубоко вниз - это просто классный рубиновый код;) Поэтому, если вы хотите изменить базовый класс контроллера рельсов, нет ничего более, чем изменить базовый класс класс ruby, который представляет упомянутый контроллер.

Смежные вопросы