我使用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