2013-07-02 69 views
0

我有一個鐵路應用程序,是爲來自不同組織的用戶。In Rails過濾所有ActiveRecord調用

我想制定一個機制,確保用戶從數據庫獲取任何數據時,只能從他的組織中獲取數據。

即使在我的查詢中有一個錯誤,我希望這是真實的,即我希望此過濾器獨立於所有其他代碼。

如何實現此過濾器以在所有ActiveRecord調用上運行?

我可以使用「default_scope」(http://apidock.com/rails/ActiveRecord/Scoping/Default/ClassMethods/default_scope)嗎?但是可以將它應用到所有模型中?

謝謝!

回答

0

對我來說,實現這一正確的唯一途徑是通過劃定範圍所有的方法類似

user_organization.<relation>.<query> 

例如,你可以有一個user_organization方法在你的ApplicationController

class ApplicationController < ActionController::Base 
    def user_organization 
    current_user.organization 
    end 
end 

默認範圍如果我沒有錯,就不接受參數,並且我極力阻止你使用任何東西。

+0

我同意這將是一個不錯的方法,但我的目標是確保如果有人在任何情況下在查詢中出現錯誤都不會發生錯誤。 – borod108