Плагин Acts_as_Inviteable, не отправляющий приглашения в Ruby on Rails - PullRequest
4 голосов
/ 14 января 2010

Я пытался создать бета-приглашения, которые может отправить каждый существующий пользователь, и надеялся, что сможет использовать плагин с именем acts_as_inviteable http://github.com/brianjlandau/acts_as_inviteable

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

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

1 Ответ

2 голосов
/ 31 января 2010

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

Добавьте эту строку в один из ваших блоков конфигурации (либо в 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

...