Загрузка ApplicationController из одного движка Rails в другой движок Rails - PullRequest
1 голос
/ 07 апреля 2019

Есть ли способ, которым я могу взять мой User MyAccounts :: ApplicationController и включить его в другой движок, как если бы он был в MyOtherEngine :: ActionController.Я смог загрузить помощников из других движков, но хотел бы сохранить вещи в ApplicationController для этого проекта.

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

module Phcaccounts
      class ApplicationController < ActionController::Base

        # Devise Filter
        before_action :phc_devise_permitted_parameters, if: :devise_controller?

        # Filter and Security
        protect_from_forgery with: :exception

        protected

        # Whitelist Additional Fields
        def phc_devise_permitted_parameters
          added_attrs = [:username, :firstname, :lastname, :email, :password, :password_confirmation, :remember_me]
          devise_parameter_sanitizer.permit :sign_up, keys: added_attrs
          devise_parameter_sanitizer.permit :account_update, keys: added_attrs
        end

        # Load Helpers & Load Helpers to Mainapp
        helper Phctitleseo::Engine.helpers
        helper Phcnotifi::Engine.helpers

        # Redirect User to Welcome Screen After Signin
        def after_sign_in_path_for(resource)
          welcome_status_page_path
        end

        # Auth Filter for Admin
        def phcaccounts_authentication_filter!
          if admin_signed_in?
            true
          else
            authenticate_user!
          end
        end

      end
    end
    require "???/???"

    module Phcpress
      class ApplicationController < ActionController::Base

        # Security
        ?????include Phcaccounts::ApplicationController?????
        protect_from_forgery with: :exception

        # Load Helpers
        helper Phctitleseo::Engine.helpers
        helper Phcnotifi::Engine.helpers

      end
    end

1 Ответ

0 голосов
/ 09 апреля 2019

Могут быть и другие способы, но это работает для всех, кто строит Rails Engines и хочет какое-то решение.Основываясь на комментарии Фабио, я создал вспомогательный движок (пример MyCoreHelperEngine), добавил его в качестве зависимости от других моих движков, поместил логику в вспомогательные файлы.Представления были в порядке, но в контроллерах вы должны включить вспомогательные файлы движка.

 module Phcpress
   class ApplicationController < ActionController::Base

     include MyCoreHelperEngine::MyHelperFile

   end
 end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...