Rails ActiveRecord: Найти всех пользователей, кроме текущего - PullRequest
57 голосов
/ 20 апреля 2010

Я чувствую, что это должно быть очень просто, но мой мозг от этого коротко замыкается. Если у меня есть объект, представляющий текущего пользователя, и я хочу сделать запрос для всех пользователей, кроме текущего, как я могу это сделать, учитывая, что текущим пользователем иногда может быть nil?

Вот что я сейчас делаю:

def index
  @users = User.all
  @users.delete current_user
end

Что мне не нравится, так это то, что я выполняю постобработку результата запроса. Кроме того, что я чувствую себя немного неправильно, я не думаю, что это будет хорошо работать, если я преобразую запрос для запуска с will_paginate. Любые предложения о том, как сделать это с помощью запроса? Спасибо.

Ответы [ 11 ]

0 голосов
/ 20 апреля 2010

То, что вы делаете, это удаление current_user из массива @users. Это не будет работать, так как нет метода удаления для массивов. Что вы, вероятно, хотите сделать, это

def index
  @users = User.all
  @users - [current_user]
end

Это вернет копию массива @users, но с удаленным объектом current_user (если он изначально содержался в массиве.

Примечание. Это может не работать, если вычитание массива основано на точных совпадениях объектов, а не на содержимом. Но он работал со строками, когда я попробовал. Не забудьте заключить current_user в [], чтобы преобразовать его в массив.

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