我試圖創建一個郵件程序,只要用戶註冊就發送一封電子郵件。很簡單,但我是新來的鐵軌。Rails用戶註冊郵件確認
我有一個網站已經創建用戶。我有一個登錄和註冊頁面可以正常工作,但需要一些幫助創建郵件程序,發送電子郵件確認鏈接,並可能發送這些電子郵件,而無需用戶註冊,就像爲用戶邀請創建單獨的頁面一樣。
我已經生成的模型invitation.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
和我invitiation_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
還有什麼我需要修改?我該如何把這個掛鉤到已經存在的用戶註冊和登錄工作正常?
是的!謝謝你,這正是我想要做的。以及只是想收到一封電子郵件,併發送了一些說明您已註冊的信息。也許我會用邀請的東西去做這個錯誤的方式。我真的不想發出邀請讓他們註冊,只要他們註冊,他們就會收到確認郵件。邀請可以遲到。所以如果我希望它只發送一封確認電子郵件,我可以使用我已經制作的相同代碼(來自railscast)發送確認電子郵件嗎?我將在哪裏以及需要將哪些內容放入我的user_controller? –
是的,儘管您可以創建兩個令牌(一個用於邀請,另一個用於註冊)。這個過程是一樣的,除了也許你可以添加另一個動作來處理確認電子郵件鏈接。 – Jaryl