2017-07-31 6 views
0

CanCanCan nous permet de configurer rapidement l'autorisation dans Rails via abilities. Le best practice doit utiliser les conditions de hachage. Cependant, scopes/blocks permettent une création de capacité plus compliquée.Possibilité d'utiliser les capacités de hachage dans CanCanCan has_many relations?

Je me demandais s'il y avait un moyen d'utiliser les capacités de hachage pour une relation has_many. Par exemple, étant donné un événement qui n'a pas de créateur et possède de nombreux administrateurs (et qui peut soit mettre à jour l'événement), je pense que cette portée fonctionnerait.

can [:update], Event do |event| 
    event.creator.id == user.id or event.admins.where(user_id: user.id).first.id == user.id 
end 

Peut-on convertir en utilisant des hachages à la place?

can [:update], Event, creator: { user_id: user.id } 
can [:update], Event, admins: { user_id: user.id } #<<< Will this work? Any gotchas? 

En outre, il serait agréable d'avoir les hash ou dans une ligne de code, mais je ne peux pas trouver un moyen de faire ce travail syntaxiquement. Merci!

Répondre