Comencé una aplicación Rails con Devise y CanCan. Tengo usuarios que tienen una relación uno a muchos con los artículos. Soy nuevo en CanCan, esto es lo que estoy planeando hacer:CanCan - Cómo permitir que los usuarios actualicen y eliminen solo sus propios objetos
administración
- puede hacer cualquier acción sobre los artículos
usuario conectado
- puede leer y crear artículos
- puede editar y destruir sus propios artículos
usuario invitado
- puede leer artículos
pero estoy teniendo problemas para entender la sintaxis de CanCan. Entiendo que sería algo como esto.
def initialize(user)
user ||= User.new
if user.admin?
can :manage, Article
else
can :read, Article
end
end
Pero esto es sólo para el administrador y el invitado de usuario, no estoy seguro de cómo diferenciar un usuario invitado de un usuario conectado, ya que crea un nuevo objeto de usuario cuando el usuario está vacía. He visto que el código debería ser algo así como can [:edit, :destroy], Article, :user_id => user.id
, pero no estoy seguro de cómo encajaría esto en el método de inicialización.
Y una última pregunta, si solo defino un can :read, Article
en invitados, ¿bloquearía las otras acciones como crear y actualizar, como el listado en blanco de la acción de lectura?
Cualquier ayuda sería apreciada. ¡Muchas gracias!
La vista no se ve bien, pero no está relacionada con el tema de la pregunta, que parece estar bien cubierto en su capacidad.rb. –
Estoy usando ayudantes hechos por mí mismo, como link_to_edit, link_to_destroy, etc. Mis ayudantes incluyen call to can?(), Por lo que no es necesario poner la lógica dentro de las vistas. –