2016-05-09 1 views
0

J'ai deux contrôleurs d'application pour mon application. Celui qui contient toutes mes informations internes et vérifie si les utilisateurs sont connectés. L'autre contrôleur d'application se trouve sous un espace de noms appelé external. Ce contrôleur permet aux utilisateurs d'accéder à certaines URL avec un jeton, et le jeton représente une entreprise validée pour voir si le jeton appartient à une société. De cette façon, un utilisateur n'a pas besoin d'être connecté, il lui suffit de connaître son jeton uniq. Le problème que je suis confronté est qu'il existe des méthodes de saisie semi-automatique que je veux réutiliser qui appartiennent à mon contrôleur d'application principal, mais ce contrôleur vérifie si les utilisateurs sont connectés afin que j'obtienne un 401 si j'essaye de chercher du côté extérieur.Contrôleur intermédiaire pour Rails

Je sais qu'il n'y a pas de double héritage dans les rails, mais est-il possible de faire en sorte qu'un contrôleur appartienne à deux contrôleurs différents? De cette façon, je peux coller toutes mes méthodes auto-complètes dans ce contrôleur et mes deux contrôleurs d'application pourront y avoir accès. La principale raison pour laquelle je veux conserver les méthodes de fin automatique dans un contrôleur est que je peux y faire des routes et que les actions retournent JSON pour que JQuery autocomplete puisse utiliser cette information.

Merci d'avance, et si je pense à ce problème, s'il vous plaît faites le moi savoir et d'autres idées que vous pourriez avoir pour accomplir cela.

Répondre

1

Vous pouvez accomplir ceci en créant un module avec vos méthodes de fin automatique (et toutes les autres méthodes que vous voulez partager entre les contrôleurs) et inclure le module dans les contrôleurs appropriés.

module ModuleName 
    def some_method 
    ... 
    end 
    ... 
end 

dans le contrôleur:

class ControllerName < ApplicationController 
    include ModuleName 
    ... 
end 

some_method sera disponible en ControllerName et tout autre contrôleur qui comprend le module

+0

Merci pour votre réponse rapide. Où recommandez-vous que j'ajoute un tel fichier? dossier lib? initialiseurs? – Doctor06

+0

Mettre les modules dans/lib. Voici un lien vers un très bon tutoriel: http://www.benfranklinlabs.com/where-to-put-rails-modules/ –