Я использую cancancan
gem для правил авторизации на основе ролей. Мне нужно подготовить что-то вроде:
can :read, Post, Post.status = 1
Это означает, что пользователь может читать сообщение со статусом = 1. Как я могу это сделать?
Я использую cancancan
gem для правил авторизации на основе ролей. Мне нужно подготовить что-то вроде:
can :read, Post, Post.status = 1
Это означает, что пользователь может читать сообщение со статусом = 1. Как я могу это сделать?
Согласно документам, это должно быть так же просто, как
can :read, Post, status: 1
Вы должны использовать столбцы базы данных для этих условий (т. е. убедитесь, что status
является столбцом в таблице posts
).
Если это не так или вам нужно что-то более сложное, чем хэш условий, вы можете посмотреть в Определение способностей с помощью блоков
Надеюсь это поможет.
Status
с большой буквы? Все должно быть в нижнем регистре (например, status
)
- person Bart Jedrocha; 28.06.2015
authorize! :show, @post
способность.rb: can :read, Post, status = 1
- person Src; 28.06.2015
can :read, Post, status: 1
и НЕ can :read, Post, status = 1
- person Bart Jedrocha; 28.06.2015
can :read, Post, status: 1
- person Src; 28.06.2015
id
или другое поле (даже в блоке), все работает нормально. Кроме того, отладка показала, что статус существует в переданной переменной Post.
- person Src; 28.06.2015
status
на state
, и все работает нормально, запутался...
- person Src; 29.06.2015
Пытаться
can(:read, Post, status: 1)
authorize! :show, @post
- person Src; 28.06.2015