2008年01月31日

Activation

Activation
メーラの用意
http://technoweenie.stikipad.com/plugins/show/Mailer+Setup
 アクティベーション
http://technoweenie.stikipad.com/plugins/show/User+Activation

>script/generate authenticated_mailer user


# config/environment.rb

Rails::Initializer.run do |config|
config.active_record.observers = :user_observer #追加

end


>メールの設定、日本語対応
/lib/iso2022jp_mailer.rb 作成

require 'nkf'
class Iso2022jpMailer < ActionMailer::Base
def base64(text)
if default_charset == 'iso-2022-jp'
text = NKF.nkf('-j -m0',text)
end
text = [text].pack('m').delete("\r\n")
"=?#{default_charset}?B?#{text}?="
end
def create!(*)
super
@mail.body = NKF::nkf('-j',@mail.body)
@mail
end
end


#environment.rb

#メールサーバーの設定
ActionMailer::Base.smtp_settings = {
:address => "localhost",
:port =>25,
:domain => "localhost",
}

# デフォルトの文字コード
ActionMailer::Base.default_charset = 'iso-2022-jp'


#models/user_notifier.rb #ドメイン、メールアドレスなど各パラメータを設定

 class UserNotifier < Iso2022jpMailer
 
protected
def setup_email(user)
@recipients = "#{user.email}"
@from = "ADMINEMAIL"
@subject = base64("[ユアサイト] ")
@sent_on = Time.now
@body[:user] = user
end


# Userテーブル(マイグレーションファイル)にカラムを追加

def self.up
create_table "users", :force => true do |t|
t.column :login, :string
t.column :email, :string
t.column :crypted_password, :string, :limit => 40
t.column :salt, :string, :limit => 40
t.column :created_at, :timestamp#:datetime
t.column :updated_at, :timestamp
t.column :remember_token, :string
t.column :remember_token_expires_at, :datetime
t.column :activation_code, :string, :limit => 40
t.column :activated_at, :datetime
end
end


# Userモデル(次のコードを追加)

class User < ActiveRecord::Base
attr_protected :activated_at
before_create :make_activation_code

# Activates the user in the database.
def activate
@activated = true
self.activated_at = Time.now.utc
self.activation_code = nil
self.save!

end

# Returns true if the user has just been activated.
def recently_activated?
@activated
end

protected
# If you're going to use activation, uncomment this too
def make_activation_code
self.activation_code = Digest::SHA1.hexdigest( Time.now.to_s.split(//).sort_by {rand}.join )
end

end


#Accountコントローラ

def activate
@user = User.find_by_activation_code(params[:id])
if @user and @user.activate
self.current_user = @user
#飛ばしたいところへ変更
redirect_back_or_default(:controller => '/account', :action => 'index')
flash[:notice] = "Your account has been activated."
end
end
posted by sistailsnow at 09:37| Comment(1) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
marc by jacobs 時計 通販 ブランド ファッション http://www.xtaiqm.com/
Posted by 通販 ブランド ファッション at 2013年08月01日 01:05
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/81594696
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。