2013-10-12 3 views
3

Я действительно новичок в рельсах и пытался работать над созданием приложения. Недавно я установил урок и omniauth для facebook с большим успехом через некоторое время. Когда я читал в разработке, я заметил, что у Devise есть встроенный в него модуль «забытого пароля».devise забыли пароль setup

Я прочесываю интернет, и для жизни меня не выяснили, как настроить его. Есть ли какой-нибудь гид? Я работал часами, но у меня не было никаких результатов. Как мне настроить это? Я использую rails 4.0 и новейшую версию разработки.

Спасибо,

Маршруты

Omrails::Application.routes.draw do 
resources :boards 

resources :pins 

get 'about' => "pages#about" 

root :to => 'pins#index' 
resources :tests, :birthdays 
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } 
end 

Разрабатывают миграции:

class DeviseCreateUsers < ActiveRecord::Migration 
def change 
create_table(:users) do |t| 
    ## Database authenticatable 
    t.string :email,    :null => false, :default => "" 
    t.string :encrypted_password, :null => false, :default => "" 

    ## Recoverable 
    t.string :reset_password_token 
    t.datetime :reset_password_sent_at 

    ## Rememberable 
    t.datetime :remember_created_at 

    ## Trackable 
    t.integer :sign_in_count, :default => 0, :null => false 
    t.datetime :current_sign_in_at 
    t.datetime :last_sign_in_at 
    t.string :current_sign_in_ip 
    t.string :last_sign_in_ip 

    ## Confirmable 
    # t.string :confirmation_token 
    # t.datetime :confirmed_at 
    # t.datetime :confirmation_sent_at 
    # t.string :unconfirmed_email # Only if using reconfirmable 

    ## Lockable 
    # t.integer :failed_attempts, :default => 0, :null => false # Only if lock strategy is :failed_attempts 
    # t.string :unlock_token # Only if unlock strategy is :email or :both 
    # t.datetime :locked_at 


    t.timestamps 
end 

add_index :users, :email,    :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 
end 

User.rb

class User < ActiveRecord::Base 

# Include default devise modules. Others available are: 
# :token_authenticatable, :confirmable, 
# :lockable, :timeoutable and :omniauthable 
devise :database_authenticatable, 
    :registerable, 
    :rememberable, 
    :trackable, 
    :recoverable, 
    :validatable, 
    :omniauthable, 
    :omniauth_providers => [:facebook] 


# Setup accessible (or protected) attributes for your model 
attr_accessible :email, :password, :password_confirmation, :remember_me, :name, :birthday, :sex, :address, :mobile, :provider, :uid 

has_many :pins, :dependent => :destroy 
has_many :boards, :dependent => :destroy 
def self.find_for_facebook_oauth(auth, signed_in_resource=nil) 
user = User.where(:provider => auth.provider, :uid => auth.uid).first 
unless user 
    user = User.create(name:auth.extra.raw_info.name, 
         provider:auth.provider, 
         uid:auth.uid, 
         email:auth.info.email, 
         password:Devise.friendly_token[0,20]) 
end 
user 
end 
end 
+0

Удивительный, спасибо! Но когда я делаю это, я получаю сообщение об ошибке «неопределенный метод« new_password_path »для # <# : 0x483a308>« это все, что я должен сделать? –

+0

Только что переместил мой комментарий в ans, на всякий случай кто-то наткнулся на ту же проблему – rb512

+0

вы можете запустить рейк-маршруты, чтобы увидеть, видите ли вы маршрут new_password? Вам нужно будет перезапустить приложение, чтобы увидеть изменения в действии – rb512

ответ

8

Devise состоит из 10 модулей, и тот, который вы ищете, можно восстановить. В вашей модели разработки вам нужно добавить атрибут :recoverable для разработки.

Смежные вопросы