2010-05-14 9 views
3

La méthode d'aide current_user est défini et mis à disposition une aide dans ApplicationController comme ceci:En utilisant une méthode d'aide dans un logiciel de messagerie qui est défini dans un contrôleur

class ApplicationController < ActionController::Base 
    helper_method :current_user 
    def current_user 
     return @current_user if defined?(@current_user) 
     @current_user = current_user_session && current_user_session.record 
    end 
end 

Ma question est de savoir comment je peux utiliser l'aide current_user méthode dans un modèle de mailer (évidemment, il retournera toujours nil, mais j'essaie de rendre un partiel qui en dépend).

Normalement quand je veux utiliser les aides dans un logiciel de messagerie, je fais quelque chose comme add_template_helper(SongsHelper), mais étant donné que l'aide est définie dans une classe au lieu d'un module, je ne suis pas sûr de ce qu'il faut faire

Répondre

4

J'aime passer l'utilisateur dans une variable, puis utilisez simplement cela dans le modèle. Il passe l'appel current_user au contrôleur (d'où je livre habituellement le courrier).

Une autre solution consiste à mettre current_user et les méthodes de prise en charge dans un module et de le mélanger dans ApplicationController et également utiliser avec la méthode helper dans votre classe qui hérite de ActionMailer :: Base. Jetez un oeil à the docs si vous êtes intéressé par cette méthode.

+0

J'ai transmis la valeur de retour de la méthode de contrôleur dans un paramètre de méthode mailer. 'UserMailer.invitation (@invitation, current_organization) .deliver' où current_organization est défini dans' ApplicationController' –