Estoy utilizando Rails 3 con Devise para autenticación de usuario. Supongamos que tengo un modelo de Usuario, con Devise habilitado y un modelo de Producto, y que un Usuario tiene muchos productos.Búsqueda de alcance de rieles con el usuario actual
En mi controlador de Productos, me gustaría que mi método de búsqueda sea examinado por current_user, es decir.
@product = current_user.products.find(params[:id])
a menos que el usuario es un usuario administrador, es decir current_user.admin?
En este momento, estoy corriendo ese código en casi todos los métodos, que parece desordenado:
if current_user.admin?
@product = Product.find(params[:id])
else
@product = current_user.products.find(params[:id])
end
¿Hay una manera más elegante/estándar de hacer esto?
Product.scoped podría reemplazar el @klochner 1 = 1, excepto que – klochner
solo funcionaría si es la primera llamada en la cadena: (funciona: 'Product.for_user (...)', does not: 'Product.enabled.for_user (...)') – mbillard
mbillard - no es cierto, intentalo – klochner