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 endemailのかわりに: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 endemail_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 件のコメント:
コメントを投稿