2010-05-02 167 views
5

我在我的項目中有一個用戶和一個管理員角色。我用Devise創建了我的身份驗證。設計註冊確認

在我的管理員角色中,我沒有任何確認。在我的用戶模式,我有以下幾點:

devise :database_authenticatable, :confirmable, :recoverable, 
     :rememberable, :trackable, :validatable, :timeoutable, :registerable 

# Setup accessible (or protected) attributes for your model 
attr_accessible :email, :username, :prename, :surname, :phone, :street, :number, :location, 
       :password, :password_confirmation 

我的遷移是這樣的:

class DeviseCreateUsers < ActiveRecord::Migration 
    def self.up 
    create_table(:users) do |t| 
     t.database_authenticatable :null => false 
     t.confirmable 
     t.recoverable 
     t.rememberable 
     t.trackable 
     t.timeoutable 
     t.validateable 
     t.string :username 
     t.string :prename 
     t.string :surname 
     t.string :phone 
     t.string :street 
     t.integer :number 
     t.string :location 

     t.timestamps 
    end 

    add_index :users, :email,    :unique => true 
    add_index :users, :confirmation_token, :unique => true 
    add_index :users, :reset_password_token, :unique => true 
    add_index :users, :username,    :unique => true 
    add_index :users, :prename,    :unique => false 
    add_index :users, :surname,    :unique => false 
    add_index :users, :phone,    :unique => false 
    add_index :users, :street,    :unique => false 
    add_index :users, :number,    :unique => false 
    add_index :users, :location,    :unique => false 
    end 

    def self.down 
    drop_table :users 
    end 
end 

在我的routes.rb我添加以下語句:

map.devise_for :admins 
map.devise_for :users, :path_names => { :sign_up => "register", :sign_in => "login" } 

map.root :controller => "main" 

用戶註冊後,我重定向到控制器main併發出通知「您已成功註冊」,並且我已登錄。但我不想登錄,因爲我沒有確認我的新用戶accou尚未。

如果我打開控制檯,我在日誌中看到確認郵件文本,但我已經登錄。我無法解釋原因。有人有想法嗎?

如果我複製出從日誌的確認標誌並且確認我的帳戶,我可以登錄,但如果我不確認,我也可以登錄。

回答

8

在配置/初始化/設計。 rb有一行可以設置用戶在被鎖定之前必須確認的時間。

config.confirm_within = 2.days 

如果將其設置爲0,則應該得到期望的結果。

+0

就是這樣!謝謝。 guitsaru我有一個問題,也許你可以幫助我。 我想在功能測試中測試一些東西,因此,我必須登錄一個用戶。登錄助手很好,工作非常好,但我有確認問題。如果我做sign_in User.make(我與機械師開發),用戶將被製造,但不確認。如果我這樣做:sign_in User.make(:confirmed_at => Time.now,:confirmation_sent_at => Time.now,....)它不起作用。你知道我能做什麼嗎? – Mattherick 2010-05-04 20:04:52

+2

嘗試使用確認! user = User.make user.confirm! – guitsaru 2010-05-05 00:03:30

+0

謝謝你!就是這樣!把我從另一半的日子裏拯救出來:) – Mattherick 2010-05-05 15:50:01