2011-09-11 28 views
19

Tôi tương đối mới với đường ray. . Tôi có lập mưu thiết lập, và muốn chạy một số mã gọi lại sau khi người dùng đăng nhập vàoTrường hợp nên quản lý cuộc gọi lại được đặt trong ứng dụng đường ray?

Nhìn vào Warden wiki page, tôi có thể sử dụng "after_set_user" gọi lại để thực hiện logic này, ví dụ:

Warden::Manager.after_set_user do |user, auth, opts| 
    unless user.active? 
    auth.logout 
    throw(:warden, :message => "User not active") 
    end 
end 

Tuy nhiên, tôi không chắc mình nên lưu trữ thứ này ở đâu. Suy nghĩ đầu tiên của tôi là tôi có thể đặt nó trong config/initializers/devise.rb. Đúng không? Nó không cảm thấy phải đặt những gì về cơ bản là mã điều khiển trong thư mục config.

+0

Trông giống như một bộ lọc, "after_set_user" có nghĩa là, tôi đoán là một bộ điều khiển. – Bnjmn

+0

Thực ra tôi đã tìm thấy một phần trong trình khởi tạo/devise.rb có tên "Cấu hình Warden", vì vậy tôi đoán rằng _is_ là địa điểm chính xác để đặt nó. –

+0

Bạn có tìm thấy nơi để đặt mã này? Hay bạn đã thích ứng với phong cách mã của trình khởi tạo của Devise bằng cách nào đó? – dgilperez

Trả lời

19

Móc treo cần được yêu cầu khi ứng dụng của bạn khởi động, do đó, bên trong trình khởi tạo của Devise tại config/initializers/devise.rb là một ứng cử viên tốt.

Tuy nhiên, hành vi mà bạn muốn đạt được sẽ được thực hiện tốt hơn bằng cách sử dụng tính năng lập mưu này:

https://github.com/plataformatec/devise/wiki/How-To:-Customize-user-account-status-validation-when-logging-in

+0

được cung cấp. – dgilperez

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