#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. И не забудьте добавить индекс в столбец, по которому выполняется поиск.