我使用Rails 3與Devise進行用戶身份驗證。比方說,我有一個用戶模型,啓用了Devise,一個產品模型,以及一個用戶has_many產品。與當前用戶查找Rails範圍
在我的Products控制器中,我希望我的find方法被current_user作用域,即。
@product = current_user.products.find(params[:id])
除非用戶是管理員用戶,即current_user.admin?
現在,我正在運行的代碼幾乎在每一個方法,這似乎凌亂:
if current_user.admin?
@product = Product.find(params[:id])
else
@product = current_user.products.find(params[:id])
end
有沒有更優雅/標準的做法?
Product.scoped可以取代1 = 1 – klochner
@klochner除了它只會在鏈中的第一個調用時工作:(作品:'Product.for_user(...)',不:'Product.enabled.for_user(...)') – mbillard
mbillard - 不正確,嘗試一下 – klochner