restful_authenticationの設定

参考サイト
http://terrazilog.quipu.jp/?eid=585865

acts_as_state_machine のインストール

ruby script/plugin install http://elitists.textdriven.com/svn/plugins/acts_as_state_machine/trunk/

restful_authentication のインストール

ruby script/plugin install http://svn.techno-weenie.net/projects/plugins/restful_authentication/

セッション管理を利用するモデル(ここでは user)と
セッション管理用コントローラ(ここでは sessions)を生成
既存のモデルを上書きする場合、マイグレーションファイルだけは
上書きされないので、事前に削除しておくこと。

ruby script/generate authenticated user sessions --include-activation --stateful
    • include-activation

メールによる認証登録を行なう

    • stateful

acts_as_state_machine を利用したステート管理を行なう

config/routes.rb追加

  map.activate '/activate/:activation_code', :controller => 'users', :action => 'activate'
#
map.signup '/signup', :controller => 'users', :action => 'new'
map.login '/login', :controller => 'sessions', :action => 'new'
map.logout '/logout', :controller => 'sessions', :action => 'destroy'
map.resources :users, :member => {
  :suspend   => :put,
  :unsuspend => :put,
  :purge     => :delete
}

ActionMailの設定
config/environment.rb

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :address => 'your.smtp.domain',
  :port => 25,               # or 587 SMTP 設定に依存
  :domain => 'localdomain',  # 分かるなら FQDN を設定
  :authentication => :login, # SMTP 認証設定に依存
  :user_name => 'username',  # 認証がないなら削除
  :password => 'password'    # 認証がないなら削除
}

config/environment.rb

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

development環境下でメール送信に失敗したことが分かるように設定
config/environments/development.rb

config.action_mailer.raise_delivery_errors = true

app/models/user_mailer.rb

def signup_notification(user)
  setup_email(user)
  @subject    += 'Please activate your new account'
  @body[:url] = "http://localhost:3000/activate/#{user.activation_code}" # テストサーバのURLにあわせて
end
def setup_email(user)
  @recipients  = "#{user.email}"
  @from        = "ADMINEMAIL" # <- ここ
  @subject     = "[YOURSITE] "
  @sent_on     = Time.now
  @body[:user] = user
end