Как показать только элементы, принадлежащие определенному пользователю (с использованием restful_authentication)? - PullRequest
4 голосов
/ 20 октября 2008

У меня есть веб-приложение с пользователями и их документами. Каждый пользователь может иметь много документов:

user.rb:

has_many :documents

document.rb:

belongs_to :user

document_controller.rb:

def index
    @documents = Document.find(:all)
end

Я использую плагин restful_authentication. Вот мой вопрос: как мне заставить контроллер показывать только документы, принадлежащие каждому пользователю? Прямо сейчас отображаются все документы для всех пользователей.

Я использую последнюю версию Rails.

Ответы [ 4 ]

7 голосов
/ 20 октября 2008

Вы устанавливаете связь в своем классе User с вашим классом Document. Это автоматически добавит метод к вашим объектам User, который возвращает список всех документов, связанных с конкретным пользователем:

def index
  @documents = @current_user.documents
end

См. документацию для других автоматически добавленных методов.

4 голосов
/ 24 марта 2013

Попробуйте это:

def index
    @documents = Document.where(:user_id => current_user.id)
end
3 голосов
/ 20 октября 2008
def index
  @documents = Document.find(:all, :conditions => {:user_id => session[:user_id]})
end
2 голосов
/ 20 октября 2008

Взгляните здесь в API рельсов в разделе Модели объединения ассоциаций.

Однако имейте в виду, что Restful-аутентификация не будет контролировать доступ, чтобы ограничить пользователей только их собственными записями, особенно с маршрутами отдыха. Они по-прежнему могут просматривать записи других пользователей, вводя значения в URL после их входа в систему.

Для этого вы можете посмотреть Restful ACL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...