Там есть ряд проблем, которые необходимо исправить:
Добавьте эту строку в один из конфигурационных блоков (либо в 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
Есть ли у вас настроенный ActionMailer? (http://wiki.rubyonrails.org/howtos/mailers). В каких средах вы это видите? ActionMailer ведет себя по-разному в тестах, разработке и производстве. –
Я так считаю. Вот почтовая рассылка на основе 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