讓我們假設一個簡單而常見的場景。如何在Rails的模型中擁有兩個「訪問級別」?
我有一個User
模型與admin
字段。用戶不能編輯admin
字段,但管理員可以編輯任何人的admin
字段。
所以,我需要給兩種類型的用戶適當的訪問權限。
如果我提出這個REST方式,我有兩個資源,說
resource :user
namespace :admin do
resources :users
end
...這裏來的困境 - 我怎麼控制,其中admin
場是可以改變的哪裏不?
我可以設置
attr_protected :admin
,以防止用戶更改他們的管理狀態。但後來我不得不做出一個特例,出來的和Admin::UsersController
,像@user.admin = params[:user][:admin]
我可以擦洗在
UsersController
的參數,這是更糟糕的params[:user].delete(:admin)
兩個這些解決方案對我來說看起來很混亂。處理這種情況的正確方法是什麼?
如果超過2個訪問級別會怎麼樣?
你試過ACL插件,像色器件或declarative_authorization緩解你的煩惱? – corroded 2011-04-07 16:44:35
好吧,設計只處理驗證,並且declarative_authorization在每個模型級別上工作,而我想要在每個字段級別上進行控制。 – 2011-04-07 16:59:29