deviseインストール
email_required? は現行のdevise1.1.3では使えない。githubのソースからgemをインストールする必要がある。gem 'devise',:git=>'http://github.com/plataformatec/devise.git'
をGemfileに記述する。bundle installした後は、いつもの
rails g devise:install
installしたあと、environments/development.rbにconfig.action_mailer.default_url_options = { :host => 'localhost:3000' }
routs.rbに
root :to=>ほげ
を記述すること、レイアアウトファイルにを記述すること、をdeviseが注意してくるのでそのとおり実行。<%= notice %>
<%= alert %>
user生成
rails g devise user
でuserを生成。この時点でのmigrateファイルはこんな感じ。
class DeviseCreateUsers < ActiveRecord::Migration
def self.up
create_table(:users) do |t|
t.database_authenticatable :null => false
t.recoverable
t.rememberable
t.trackable
# t.confirmable
# t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
# t.token_authenticatable
t.string :name
t.timestamps
end
add_index :users, :name, :unique => true
add_index :users, :reset_password_token, :unique => true
# add_index :users, :confirmation_token, :unique => true
# add_index :users, :unlock_token, :unique => true
end
def self.down
drop_table :users
end
end
emailのかわりに:nameを認証に使うのでそれを追加。add_index :users, :name, :unique => true
もemailの代わりに記述する。ここでadd_index :users, :email, :unique => true
を残しておくと、せっかくemailなしでuserを作れてもデータベースにsaveするときsplite3にはねられてしまう。(とえらそうに書いているのは、その失敗を実際にやってしまったから(^^;))userのmodel。
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable, :lockable and :timeoutable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me,:name
validates :name,:presence=>true,:length=>{:maximum=>20}
validates_presence_of :email, :if => :email_required?
def email_required?
false
end
end
email_required?をfalseにしておくことでemailなしの認証を可能にする。devise調整
initializers/devise.rbをいくつか編集する。23行目、
config.authentication_keys = [ :name ]
emailから:nameに変更。46行目、
config.encryptor = :bcrypt
をコメントアウト。これはコメントアウトしないままでサーバを起動したら注意されるので。110行目、
config.scoped_views = true
これはコメントをはずして有効にする。これでviewをカスタマイズできるようになるので、rails g devise:views users
として、user用のviewを生成する、これでemailを入力しないでレジストできるようになる、はず。何か書き忘れたことがあるかも・・。
0 件のコメント:
コメントを投稿