2010-05-02 45 views
5

Tôi có vai trò Người dùng và Quản trị viên trong dự án của mình. Tôi đã tạo ra xác thực của mình với Devise.Xác nhận đăng ký Devise

Trong vai trò quản trị viên của tôi, tôi không có bất kỳ xác nhận nào. Trong mô hình tài khoản của tôi, tôi có những điều sau đây:

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 

di cư của tôi trông giống như:

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 

trong routes.rb của tôi, tôi nói thêm câu sau đây:

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

map.root :controller => "main" 

Sau khi đăng ký sử dụng tôi chuyển hướng đến bộ điều khiển main với thông báo flash "Bạn đã đăng ký thành công" và tôi đã đăng nhập. Nhưng tôi không muốn đăng nhập, vì tôi chưa xác nhận người dùng mới của mình nt chưa.

Nếu tôi mở bảng điều khiển, tôi thấy trong nhật ký văn bản xác nhận thư, nhưng tôi đã đăng nhập. Tôi không thể giải thích lý do. Có ai có ý tưởng gì không?

Nếu tôi sao chép ra thư xác nhận-token từ các bản ghi và xác nhận tài khoản của tôi, tôi có thể đăng nhập, nhưng nếu tôi không xác nhận, tôi cũng có thể đăng nhập.

Trả lời

8

Trong config/initializers/đưa ra. rb có một dòng để đặt khoảng thời gian người dùng phải xác nhận trước khi họ bị khóa.

config.confirm_within = 2.days 

Nếu bạn đặt thành 0, bạn sẽ nhận được kết quả mong muốn.

+0

đúng là vậy! cảm ơn. guitsaru tôi có câu hỏi annother, có thể bạn có thể giúp tôi. tôi muốn thử nghiệm một vài điều trong thử nghiệm chức năng và vì điều này, tôi phải đăng nhập vào một người dùng. helper đăng nhập là tốt và hoạt động rất tốt, nhưng tôi có vấn đề với xác nhận. nếu tôi làm cho sign_in User.make (tôi phát triển với machinist), người dùng sẽ được thực hiện, nhưng không được xác nhận. Nếu tôi làm như vậy: sign_in User.make (: confirmed_at => Time.now,: confirmation_sent_at => Time.now, ....) Nó không hoạt động. Bạn có ý tưởng tôi có thể làm gì không? – Mattherick

+2

Thử sử dụng xác nhận! người dùng = User.make user.confirm! – guitsaru

+0

cảm ơn người đàn ông! Điều đó là vậy đó! đã cứu tôi khỏi googeling nửa ngày khác :) – Mattherick

Các vấn đề liên quan