2010-01-14 1 views
4

Я пытался создать бета приглашающий, что каждый существующий пользователь может посылать и надеялся, чтобы иметь возможность использовать плагин под названием acts_as_inviteablehttp://github.com/brianjlandau/acts_as_inviteableActs_as_Inviteable Плагин не посылать приглашения в Ruby On Rails

мне было интересно, если кто-нибудь имел непосредственный опыт работы с ним. Когда я проверил консоль, она, похоже, создает правильные запросы, но никаких ошибок по электронной почте или электронной почте не возникает.

У меня возникает соблазн просто использовать превосходное руководство Ryan Bates на бета-приглашении и написать его сам, но я бы хотел, чтобы что-то работало. Мы просто не можем понять это.

+0

Есть ли у вас настроенный ActionMailer? (http://wiki.rubyonrails.org/howtos/mailers). В каких средах вы это видите? ActionMailer ведет себя по-разному в тестах, разработке и производстве. –

+0

Я так считаю. Вот почтовая рассылка на основе ActionMailer: http://github.com/allyforce/RQ-Upload/blob/master/app/models/analyst_invitation_mailer.rb И в конфигурации я добавил конфигурацию ActionMailer: http: // github .com/allyforce/RQ-Upload/blob/master/config/environment.rb – Angela

ответ

2

Там есть ряд проблем, которые необходимо исправить:

Добавьте эту строку в один из конфигурационных блоков (либо в environment.rb или каждого из файлов в config/environment):

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

В app/models/invitation.rb на строка 3, вы вызываете attr_accessible :recipient_email, это предотвратит массовое назначение отправителя. Вы должны изменить его к этому:

attr_accessible :recipient_email, :sender, :sender_id 

Также invitations_controller.rb должен выглядеть следующим образом:

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 

Вы действительно не можете отправить приглашение, если Вы не вошли в систему (потому что вам нужен датчик, который в этом случае это current_analyst не @current_user), поэтому линии, имеющие различную логику в зависимости от того, вошли ли они в систему или нет, были удалены.

Кроме того, электронная почта будет автоматически отправлена ​​моделью приглашения так вызывающему Mailer.deliver_invitation(@invitation, signup_url(@invitation.token)) ненужно (и на самом деле она должна была бы быть AnalystInvitationMailer.deliver_invitation(@invitation))

Вы можете увидеть полный рабочий патч здесь: http://gist.github.com/290911

+0

спасибо, вы действительно очень помогли нам! – Angela

+0

Я также предложил пример приложения, которое может быть полезно: http://github.com/brianjlandau/acts_as_inviteable_example_app –

+0

Спасибо, что вы отлично поработали. – Angela