В Rails, что является лучшим способом авторизации доступа пользователя к модели? - PullRequest
0 голосов
/ 05 декабря 2011

Я использую Devise для аутентификации пользователя и базовой аутентификации. Допустим, я определил две взаимные ассоциации между пользователями и автомобилями.

  • Пользователь has_many :cars
  • Автомобиль belongs_to :user

У пользователя A есть автомобиль с идентификатором 1, у пользователя B - автомобиль с идентификатором 2.

Как лучше всего предотвратить доступ пользователя A к ресурсу на /cars/2? Я мог бы добавить before_filter для: show,: edit,: update,: destroy для каждого контроллера, но это кажется утомительным и повторяющимся. Есть ли способ использовать Devise или CanCan для этой цели?

1 Ответ

2 голосов
/ 05 декабря 2011

вы можете использовать CanCan для этого, подробнее об этом здесь https://github.com/ryanb/cancan

после добавления load_and_authorize_resource в верхней части вашего контроллера

вы можете добавить следующую строку в вашу способностьмодель, позволяющая владельцу машины управлять ею

может: управлять автомобилем: user_id => user.id

...