2011-01-04 28 views
34

Tôi muốn tự tạo mới User giây mà không buộc họ xác minh địa chỉ email của họ.Rails 3 với Devise for Authentication - Làm cách nào để tạo thủ công người dùng?

Ý tưởng là cho phép người dùng hiện tại tự động thêm bạn bè của họ mà không cần đăng ký. Điều đó có ý nghĩa đối với trường hợp kinh doanh mà tôi đang làm việc để giải quyết.

Làm cách nào để đạt được điều này với Devise?

Trả lời

50

Phương thức skip_confirmation! có sẵn cho bất kỳ mẫu confirmable nào.

@user = User.new params[:user] 
@user.skip_confirmation! # Sets confirmed_at to Time.now, activating the account 
@user.save 

Tài khoản người dùng sẽ được kích hoạt. Nếu bạn không muốn điều đó, hãy tiếp tục đọc.

Devise sử dụng gọi lại có điều kiện để tạo mã xác nhận và gửi email. Số gọi lại sẽ chỉ được gọi nếu confirmation_required? trả lại true. Xác định lại nó trên mô hình của bạn:

def confirmation_required? 
    false 
end 

Tuy nhiên, điều này sẽ làm cho các phương pháp active_for_authentication? luôn trở thành sự thật bởi vì nó mất hay không xác nhận được yêu cầu vào tài khoản. Chúng tôi cũng phải xác định lại điều đó:

def active_for_authentication? 
    confirmed? || confirmation_period_valid? 
end 

Bằng cách này, tài khoản sẽ không hoạt động và sẽ không có email xác nhận nào được gửi. Bạn sẽ phải kích hoạt thủ công người dùng bằng cách gọi confirm! trên hồ sơ hoặc chỉ cần đặt confirmed_at cho bất kỳ ngày nào.

Nó khá là hack, nhưng nó sẽ hoạt động.

Để tham khảo: confirmable.rb

+1

cảm ơn bạn. nhưng tôi không muốn người dùng có thể đăng nhập. sẽ thiết lập người dùng để xác nhận cho phép người dùng một số cách đăng nhập? điều đó sẽ làm gì, chỉ ngăn không cho gửi email? thanks – AnApprentice

+0

Ngoài ra, khi tôi cố gắng lưu một người dùng mới như bạn đã đề cập ở trên, tôi nhận được FALSE trên @ user.save .... bên cạnh email, các trường khác được yêu cầu để lưu người dùng? – AnApprentice

+0

Tôi đã cập nhật câu trả lời của mình. Bất kỳ trường nào được đánh dấu là không rỗng trên lược đồ của bạn hoặc có sự hiện diện mà mô hình của bạn xác nhận là bắt buộc. Nếu bạn không cung cấp cho họ Active Record sẽ không lưu đối tượng của bạn. –

9

Tôi chỉ muốn thêm để tham khảo trong tương lai rằng kể từ khi lập mưu 2.2 hiện nay là một phương pháp skip_confirmation_notification! sẵn cũng mà về cơ bản tất cả mọi thứ từ bài Matheus' mà không cần xác định lại các phương pháp trong mô hình.

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