2012-12-28 11 views
5

Tôi có một đường ray 3,2 ứng dụng với lập mưu 2.1đường after_sign_out độc đáo với nhiều mô hình với lập mưu và đường ray

tôi có 2 mô hình sử dụng đưa ra (AdminUser và User)

Models:

class AdminUser < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable 
end 

class User < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable 
end 

Tôi đã tạo ra các khung nhìn riêng biệt cho cả hai mô hình thông qua trình tạo ra. lượt xem/tạo thư mục cho AdminUser (tháng được triển khai trước khi yêu cầu mới) lượt xem/thư mục người dùng cho Mô hình người dùng

Sau khi đăng xuất, tôi muốn chuyển hướng đến các hành động cụ thể phù hợp với mô hình phát sinh. Đoạn code dưới đây làm việc tại application_controller.rb nhưng nó được áp dụng cho cả mô hình mà tôi muốn làm mà không:

def after_sign_out_path_for(user) 
    user_landing_path 
end 

Đăng xuất khỏi một trong hai mô hình chuyển hướng đến trang đích tương tự, nhưng tôi muốn có một điểm đến độc đáo cho cả hai mô hình dự đoán.

Tôi làm cách nào để đạt được điều này?

Trả lời

0

Một số điều bạn có thể làm:

case user.class 
when AdminUser.class 
    do_admin_sign_out() 
when User.class 
    do_user_sign_out() 
else 
    no_idea_who_you_are() 
end 

hoặc

if user.kind_of? AdminUser 
    do_admin_thing() 
else 
    do_user_thing() 
end 

cách khác, bạn có thể thêm một kiểm tra admin? để cả hai mô hình, và kiểm tra xem, ví dụ:

if user.admin? 
    do_admin_thing() 
... 

Tôi có lẽ sẽ làm sau, vì điều này có thể xuất hiện ở nơi khác, nhưng đây là một trong những lựa chọn của bạn.

+0

đâu sẽ mã này đi trong bối cảnh của một chuỗi devise signout? Tôi có thể thấy các kiểm tra hoạt động trên cơ sở đặc biệt, nhưng không chắc chắn nó phù hợp như thế nào trong trường hợp này, nơi tôi đang sử dụng bộ điều khiển trong công cụ Devise – koa