2012-07-11 29 views
7

Tôi đang xây dựng một ứng dụng nhiều người thuê với ActiveAdmin làm giao diện quản trị chính. Tôi đã sử dụng đá quý actions_as_tenant để hoàn thành dữ liệu riêng biệt một cách độc đáo.Nhiều người thuê, người dùng đa quản trị trong ActiveAdmin

Tôi đã sử dụng mô hình AdminUser làm đối tượng mô hình người dùng cho tất cả người dùng.

Để thêm người dùng khác, Người dùng quản trị cũng được đưa vào người thuê.

này được ném ra khỏi đăng nhập, bởi vì khi ActiveAdmin/lập mưu cố gắng để xác thực, tôi cho rằng đó là lần đầu tiên đánh bộ lọc find_tenant như hình dưới đây:

class ApplicationController 
    set_current_tenant_through_filter 

    before_filter :find_tenant 

    def find_tenant 
    if admin_user_signed_in? 
     set_current_tenant(Company.find(current_admin_user.company_id)) 
    end 
    end 

Không chắc làm thế nào để làm được việc này ... Tôi muốn người dùng đăng nhập và sau đó ứng dụng lấy company_id từ người dùng đã đăng nhập và thiết lập đối tượng thuê và tất cả dữ liệu được hiển thị trên ActiveAdmin được scoped qua người thuê đó (phần này hoạt động tốt thông qua gem gem actions_as_tenant nếu tôi có thể vượt qua thông tin đăng nhập) .

Cảm ơn

Trả lời

0

Tôi nghĩ rằng những nghi ngờ của bạn là chính xác, và rằng phương pháp find_tenant đang được gọi là trước khi xác thực, dẫn đến admin_user_signed_in? là sai. Điều chỉnh nó để sử dụng một bộ lọc sau, thay vào đó, nên làm các trick, nếu điều này thực sự là trường hợp (từ http://guides.rubyonrails.org/action_controller_overview.html#after-filters-and-around-filters).

class ApplicationController 
    set_current_tenant_through_filter 

    after_filter :find_tenant 

    def find_tenant 
    if admin_user_signed_in? 
     set_current_tenant(Company.find(current_admin_user.company_id)) 
    end 
    end 

Bạn không chắc cách set_current_tenant_through_filter hoạt động với tất cả những điều này, bạn có đang cố gắng thực hiện tương tự hai cách khác nhau không?

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