У find_by в rails есть несколько результатов

Я пытаюсь вернуть все группы, созданные пользователем. Все группы связаны с идентификатором пользователя. Когда я запускаю запрос find_by, он возвращает только первый результат. Есть ли способ вернуть несколько? Спасибо заранее

Ответ 1

Измените find_by на find_all_by, и он вернет все соответствующие результаты.

Ответ 2

Я пишу отдельный ответ, потому что не могу комментировать ответ Джеймса Лоури, поскольку у меня нет 50 баллов.

find_all_by устарел (Ruby 4.2).

Чтобы получить список активных записей с моделей, выполните:

Model.where(attribute_name: val)

Например, чтобы найти все записи в таблице Vehicle (с именем столбца "имя_модель" ), чтобы значение model_name было "Audi", do

@vehicles = Vehicle.where(model_name: "Audi")

Вы можете повторить их так:

<%  @vehicles.each do |vehicle| %>

Ответ 3

Я думаю, что find_all_by теперь может быть устаревшим (по крайней мере, я не мог заставить его работать). Я считаю, что функция "where" теперь рекомендуется

where("name LIKE ?","%#{search}%")
where(instructor_id: params[:choosen_instructor_id])   
where ("id = ?",id_val)

Если вы не знаете, то? и список параметров - это предотвращение SQL-инъекций

Ответ 4

Пользовательский класс имеет id как первичный ключ.
который хранится как user_id в классе Group
Затем, чтобы найти все группы, связанные с этим пользователем, можно найти как.
@Группы = Group.find_all_by_user_id (идентификатор_пользователь)