Estoy usando CanCan para los permisos en mi aplicación Rails en la que he creado mi propio motor para algunas funcionalidades de formularios genéricos. Me gustaría bloquear los permisos en mi sistema para que los usuarios no puedan acceder libremente a las acciones de mis controladores del motor. Estos controladores, en su mayor parte, solo hacen uso de las 7 acciones de REST, por lo que me gustaría usar el load_and_authorize_resource
de CanCan en la parte superior de cada controlador.CanCan: load_and_authorize_resource en el espacio de nombres que no sea el de MainApp
Sin embargo, cuando escribo mi código como este:
module MyEngine
class FormController < ApplicationController
load_and_authorize_resource
...
end
end
consigo este error:
uninitialized constant Form
Mi conjetura es que el cargador automático en load_and_authorize_resource
está ligado a mi espacio de nombres MainApp, y no reconoce que lo estoy llamando en un espacio de nombre diferente, al igual que una llamada como Form.find(params[:id])
en lugar de MyEngine::Form.find(params[:id])
.
Si este es el caso, ¿cómo puedo solucionarlo? No es un gran problema porque authorize!
todavía funciona correctamente, por lo que puedo definir la autorización en cada acción individualmente, pero sería mucho más claro si pudiera usar el método load_and_authorize_resource
.
posible duplicación de [Autorización de controladores espaciados por nombre y anidados utilizando CanCan] (http://stackoverflow.com/questions/12334367/authorizing-namespaced-and-nested-controllers-using-cancan) –