사용자가 가입 할 때마다 이메일을 보내는 메일러를 만들려고합니다. 아주 간단하지만 나는 레일을 처음 사용합니다.Rails 사용자 등록 메일 확인
나는 이미 사용자를 생성 한 사이트가 있습니다. 나는 제대로 작동하는 로그인 및 가입 페이지를 가지고 있지만, 사용자 확인없이 별도의 페이지를 만드는 것처럼 가입하지 않고 이메일 확인 링크와 아마도 이러한 이메일을 보내는 옵션을 보내는 메일러를 만드는 데 도움이 필요합니다.
나는
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
다른 내가 편집해야 않는
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.rb 모델 내 invitiation_controller.rb를 생성 한? 어떻게하면 기존의 사용자 가입 및 로그인에 문제가 없습니까?
예! 고마워요. 정확히 내가하려고하는 것입니다. 글쎄 그냥 이메일에 당신이 가입했다고 말하는 어떤 것을 보내길 원한다. 어쩌면이 일에 대해 초대장으로 잘못된 방법을 사용하는 것일 수 있습니다. 나는 그들이 가입 할 때 초대장을 보내지 않고, 가입 할 때 확인 이메일을 받는다. 초대장은 나중에 올 수 있습니다. 그래서 만약 내가 단지 확인 이메일을 보내길 원한다면, 나는 (railscast에서) 이미 확인한 이메일을 보내기 위해 만든 동일한 코드를 사용할 수 있습니까? 어디서 내가 뭘하고 내 user_controller에 넣어야합니까? –
예, 두 개의 토큰 (초대장과 등록용으로 하나씩)을 만드는 것이 좋습니다. 이 과정은 확인 이메일 링크를 처리하는 또 다른 조치를 추가 할 수 있다는 점을 제외하면 동일합니다. – Jaryl