Я изменяю некоторые из своих пользовательских действий CanCan в классе Ability, чтобы использовать блоки вместо хэша, но теперь они фактически перестали ограничивать доступ. Странно, что встроенные действия вроде: manage and: create и т. Д., Похоже, все еще работают нормально с блоками.Пользовательские действия CanCan, не работающие с блоками
Это один пример:
OLD
# this one works
can :share, Project, :user_id => user.id
NEW
# this one doesn't work
can :share, Project do |project|
project.users.exists?(user)
end
Любой столкнуться с этой проблемой раньше?
Поверьте мне, я не хочу использовать блоки, но это похоже на единственный способ сделать это в моем случае. Я перешел от отношений «один ко многим» между «Проекты» и «Пользователи» ко многим-многим, поэтому теперь мне нужно проверить всех пользователей проекта, а не только одного. – Matt
Хмм, попробуйте использовать отладчик и посмотрите, что происходит в CanCan при проверке возможностей. Или откройте и отредактируйте файлы cancan gem в вашей файловой системе и посмотрите, что передается с помощью демпинговых переменных. Вот как я остаюсь на пути, когда я не могу думать ни о чем другом. Конечно, верните файлы назад;) – Mirko