2012-05-29 5 views
0

В моем проекте Rails 3.2 есть пользователь, созданный разработчиком, и набор моделей, которые содержат данные, характерные для этого пользователя. Я хочу, чтобы вошедший в систему пользователь мог получать доступ только к своим собственным данным через API-интерфейсы, открытые контроллерами.Разрешить авторизацию для текущего пользователя?

Теперь, перебором способ для того, чтобы это было бы изменить каждый и каждый контроллер от чего-то вроде:

def index 
    @stuff = Stuff.all 

в

def index 
    @stuff = Stuff.find_all_by_user_id current_user.id 

И я должен повторить это для каждого действия каждого отдельного контроллера. Возможно ли более сжатый и суровый способ достижения такого же эффекта? Количество шаблона, которое я должен написать, кажется неправильным.

Спасибо!

ответ

1

Посмотрите на драгоценный камень CanCan.

+0

Я думаю, что это следует сделать трюк, я дам вам знать, если люди это не разрезая его ! –

0

а) Вы можете иметь , прежде чем обратный вызов в application_controller.rb, который выглядит как-то

def find_stuff_from_current_user 
    @stuff = Stuff.find_all_by_user_id current_user.id 
end 

И чем называть это в каждом контроллере, как это:

before_filter :find_stuff_from_current_user 

Теперь у вас есть @ доступную в каждом контроллере и в каждом действии.

б) Или вы можете использовать обзорный в вещи model.rb где вы говорите что-то вроде:

scope :stuff_from_current_user, where(:user => current_user) 
Смежные вопросы