1
我正在做一個user
模型的檢查,以確定他/她是否有一個或多個task_list
,如果她有多個task_list只允許她刪除它,否則會引發異常。我基本上叫delete_list用戶模型的方法,以允許短手的缺失,如user1.delete_list(list1)
Rails授權?檢查模型vs控制器
我辯論是否將在慘慘檢查哪裏會濾波器之前應用的控制器上,或者是否有它在用戶模型中也是如此。建議的做法是什麼?
我正在做一個user
模型的檢查,以確定他/她是否有一個或多個task_list
,如果她有多個task_list只允許她刪除它,否則會引發異常。我基本上叫delete_list用戶模型的方法,以允許短手的缺失,如user1.delete_list(list1)
Rails授權?檢查模型vs控制器
我辯論是否將在慘慘檢查哪裏會濾波器之前應用的控制器上,或者是否有它在用戶模型中也是如此。建議的做法是什麼?
我認爲一個很好的DRY方法是在你的模型中創建一個測試是否允許刪除的方法。然後從你的控制器或從ability.rb使用該方法。恕我直言,我認爲如果將來有可能更改爲不同的許可系統,那麼從CanCan中解脫出來的複雜權限/業務邏輯會更好。
在你的模型:
def can_destroy_list(list)
... Do check here ....
end
在ability.rb
can :destroy, List do |list|
user.can_destroy_list(list)
end
你的控制器和視圖可以,如果隨後也直接使用can_destroy_list
的模型實例nessary或使用:如果can? :destroy, @list