Rails — эффективный способ поиска записей с определенным значением в модели

#ruby-on-rails #database #activerecord

#ruby-on-rails #База данных #activerecord

Вопрос:

Итак, я пытаюсь найти все записи в моей таблице, которые имеют определенное значение в определенном столбце. Единственный способ, который я могу придумать, чтобы сделать это, — просмотреть каждую запись и посмотреть, имеет ли она значение, но я надеялся, что найдется более эффективное решение — это становится громоздким, когда у вас есть значительная база данных.

У кого-нибудь есть идея получше?

Обновление — Я создаю таблицу HTML и хочу заполнить таблицу всеми записями в моей модели, которые имеют определенное значение в определенном столбце. Я пытаюсь сделать:

 <%= render @users.where("column_name = 'value'") %>
  

как рекомендует приведенный ниже ответ, но я получаю ошибку «неопределенный метод `where’ для nil: NilClass».

Обновление 2 — Я не уверен, почему @users будет равен нулю, но я попытаюсь выяснить это позже. На данный момент я попытался

 <% @user_message = User.where("column_name = 'value'") %>
<%= render @user_message %>
  

но он вообще не показывает никаких записей.

Обновление 3 — Когда я это делаю, User.all в консоли rails я получаю всех пользователей, поэтому я знаю, что данные там. Однако, когда я выполняю User.where(«column_name = ‘value'»), я получаю пустой массив. Я дважды проверил имя столбца и значение, чтобы убедиться, что данные присутствуют.

Обновление 4 — Исправлено! — Я не уверен, почему это не сработало в консоли rails, но я заставил это работать на сайте. Я вызвал свой частичный _user_message.html.erb . По-видимому, это все еще должно называться _user.html.erb . Спасибо всем за помощь!

Комментарии:

1. Я думаю, что это невозможно с реляционными базами данных. Пожалуйста, объясните, почему вы хотите это сделать, и, возможно, кто-нибудь мог бы предложить лучшее решение для вашей реальной проблемы.

2. Это означает, что @users есть nil . Сделайте User.where , как указано @ipd

Ответ №1:

Похоже, вы хотите выполнить запрос where, т.Е.

 @records = Model.where(:some_column => some_value)
  

У Rails отличная документация, я предлагаю вам взглянуть на руководство по запросу ActiveRecord:

http://guides.rubyonrails.org/active_record_querying.html

ян.

Комментарии:

1. И не забудьте добавить индекс в столбец, по которому выполняется поиск.