ユーザーがサインアップするたびに電子メールを送信するメーラーを作成しようとしています。かなり単純ですが、私はレールが初めてです。
既にユーザーを作成しているサイトがあります。正しく機能するログインおよびサインアップ ページがありますが、電子メール確認リンクを送信するメーラーの作成と、ユーザーの招待用に別のページを作成するなど、ユーザーがサインアップせずにこれらの電子メールを送信するオプションを作成するのに助けが必要です。
モデルの招待状を作成しました.rb
class Invitation < ActiveRecord::Base
belongs_to :sender, :class_name => 'User'
has_one :recipient, :class_name => 'User'
validates_presence_of :recipient_email
validate :recipient_is_not_registered
validate :sender_has_invitations, :if => :sender
before_create :generate_token
before_create :decrement_sender_count, :if => :sender
private
def recipient_is_not_registered
errors.add :recipient_email, 'is already registered' if User.find_by_email(recipient_email)
end
def sender_has_invitations
unless sender.invitation_limit > 0
errors.add_to_base 'You have reached your limit of invitations to send.'
end
end
def generate_token
self.token = Digest::SHA1.hexdigest([Time.now, rand].join)
end
def decrement_sender_count
sender.decrement! :invitation_limit
end
#attr_accessible :sender_id, :recipient_email, :token, :sent_at
end
そして私のinvitation_controller.rb
class InvitationsController < ApplicationController
def new
@invitation = Invitation.new
end
def create
@invitation = Invitation.new(params[:invitation])
@invitation.sender = current_user
if @invitation.save
if logged_in?
Mailer.deliver_invitation(@invitation, signup_url(@invitation.token))
flash[:notice] = "Thank you, invitation sent."
redirect_to projects_url
else
flash[:notice] = "Thank you, we will notify when we are ready."
redirect_to root_url
end
else
render :action => 'new'
end
end
end
他に何を編集する必要がありますか? これを、正常に機能している既存のユーザーサインアップとログインに接続するにはどうすればよいですか?