Плагин Acts_as_Inviteable, не отправляющий приглашения в Ruby on Rails
Я пытался создать бета-приглашения, которые может разослать каждый существующий пользователь, и надеялся, что сможет использовать плагин под названием acts_as_inviteable
http://github.com/brianjlandau/acts_as_inviteable
Мне было интересно, если бы кто-нибудь имел прямой опыт с этим. Когда я проверил консоль, она, кажется, создает правильные запросы, но никаких ошибок, связанных с электронной почтой или электронной почтой, не возникает.
Я испытываю желание просто использовать превосходный учебник Райана Бейтса по бета-приглашениям и написать его сам, но я бы хотел, чтобы что-то работало. Мы просто не можем понять это.
1 ответ
Есть ряд проблем, которые нужно решить:
Добавьте эту строку в один из ваших блоков конфигурации (либо в 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