Как я должен аутентифицировать доступ к объекту Active Record? - PullRequest
1 голос
/ 28 марта 2011

Это кажется простой задачей, но у меня возникают проблемы с поиском "рельсового" способа сделать это.

Я использую Authlogic для аутентификации пользователей, и у каждого пользователя есть: Пользователю А.

Кажется, у меня есть три варианта.

  1. Добавить условие (user_id == current_user.id) во все мои операторы Find
  2. Используйте before_filter для выполнения вышеуказанного
  3. Используйте default_scope, чтобы добавить это условие аутентификации (но я думаю, что это будет проблемой, когда я начну писать тесты).

Что другие считают лучшим подходом к этой проблеме?

В качестве дополнительного вопроса предположим, что в этом случае пользователь has_many: blogs, Blog has_many: section и Section has_many: images. В этом случае все элементы блога должны быть ограничены пользователем А, но только у блога есть столбец user_id. Какой самый эффективный / элегантный способ добавления одного и того же условия аутентификации в разделы и изображения?

Спасибо, Mike

Ответы [ 2 ]

1 голос
/ 29 марта 2011

Другим вариантом может быть использование камня cancan.https://github.com/ryanb/cancan

Это действительно просто, и вы также можете решить свою бонусную проблему.

Например:

can :manage, Blog, :user_id=>user.id
can :manage, Section, :blog=>{:user_id=>user.id}
can :manage, Image, :section=>{:blog=>{:user_id=>user.id}}

Эта настройка хороша, если у вас есть

Blog belongs_to User
Section belongs_to Blog
Image belongs_to Section

О том, как настроить остальные, смотрите Wiki .

О, и я забыл, что есть также скринкаст о cancan

0 голосов
/ 29 марта 2011

Используйте before_filter с функцией, которая проверяет, аутентифицирован ли пользователь или нет.

...