2010-01-14 2 views
4

Je suis en train de créer beta invite que chaque utilisateur existant peut envoyer et espérait pouvoir utiliser un plugin appelé acts_as_inviteablehttp://github.com/brianjlandau/acts_as_inviteableActs_as_Inviteable Plugin ne pas envoyer des invitations en Ruby on Rails

Je me demandais si quelqu'un avait une expérience directe avec cela. Lorsque j'ai vérifié la console, elle semble créer les bonnes requêtes, mais aucune erreur liée au courrier électronique ou au courriel ne survient. Je suis tenté de simplement utiliser l'excellent didacticiel de Ryan Bates sur les invitations à la bêta et de l'écrire moi-même, mais j'aimerais bien que quelque chose fonctionne. Nous n'arrivons tout simplement pas à comprendre.

+0

Avez-vous configuré ActionMailer? (http://wiki.rubyonrails.org/howtos/mailers) Aussi, dans quels environnements voyez-vous cela? ActionMailer se comporte différemment dans le test, le développement et la production. –

+0

Je le crois. Voici le mailer basé sur ActionMailer: http://github.com/allyforce/RQ-Upload/blob/master/app/models/analyst_invitation_mailer.rb Et dans la configuration j'ai ajouté des configurations ActionMailer: http: // github .com/allyforce/RQ-Upload/blob/master/config/environnement.rb – Angela

Répondre

2

Il y a un certain nombre de problèmes que vous devez corriger:

Ajouter cette ligne à un de vos blocs de configuration (soit en environment.rb ou chacun des fichiers config/environment):

config.action_mailer.default_url_options = {:host => 'somewhere.com'} 

En app/models/invitation.rb sur ligne 3 vous avez appelez attr_accessible :recipient_email cela vous empêchera d'attribuer massivement l'expéditeur. Vous devez changer à ceci:

attr_accessible :recipient_email, :sender, :sender_id 

Aussi invitations_controller.rb devrait ressembler à ceci:

class InvitationsController < ApplicationController 
    before_filter :require_analyst 

    def new 
    @invitation = Invitation.new 
    end 

    def create 
    @invitation = Invitation.new(params[:invitation]) 
    @invitation.sender = current_analyst 
    if @invitation.save 
     flash[:notice] = "Thank you, invitation sent." 
     redirect_to root_url 
    else 
     render :action => 'new' 
    end 
    end 

end 

Vous ne pouvez vraiment pas envoyer une invitation à moins que vous êtes connecté (car vous avez besoin d'un expéditeur, qui dans ce cas est un current_analyst pas @current_user), donc les lignes ayant une logique différente selon la connexion ou non ont été supprimées.

En outre, l'e-mail sera envoyé automatiquement par le modèle d'invitation afin d'appeler Mailer.deliver_invitation(@invitation, signup_url(@invitation.token)) est inutile (et en fait, il devrait être AnalystInvitationMailer.deliver_invitation(@invitation))

Vous pouvez voir un patch de travail complet ici: http://gist.github.com/290911

+0

merci, vous nous avez vraiment aidé beaucoup! – Angela

+0

J'ai également mis en place un exemple d'application qui pourrait être utile: http://github.com/brianjlandau/acts_as_inviteable_example_app –

+0

Merci de votre excellent travail. – Angela