Как запросить модель рельсов с помощью массива

Привет, люди с переполнением стека

Я относительно новичок в платформе rails, и мне нужна помощь с запросом модели.

Вот мой код:

def create
@project = Project.new(params[:project])
if @project.save
    redirect_to new_project_path
end

[email protected]_str.split(";")
end

Каждый раз, когда создается новый проект, сохраняется строка с именем student_str, где идентификационный номер каждого учащегося отделяется знаком «;». Я разделил эту строку на массив, используя функцию разделения

Итак, вот моя проблема

У меня есть другая модель, называемая пользователями, которая содержит список всех студентов в системе. Я хочу выбрать @users для всех записей модели, где их идентификатор соответствует любому из значений массива в массиве «студент».

Любая помощь будет высоко ценится

Спасибо

РЕДАКТИРОВАТЬ:

Прямо сейчас я тестирую ненужные данные. Таким образом, мой student_str будет выглядеть примерно так: 1PI12CS019;1PI10IS034;1PI11ME110.

Каждый из идентификаторов разделен знаком «;».

Модель студента создается с помощью devise gem и содержит следующие поля.

ID Имя Электронная почта Номер телефона

и другие разработки


person Alok Mysore    schedule 19.07.2013    source источник
comment
Пожалуйста, опубликуйте пример student_str и схему базы данных модели Student.   -  person davidb    schedule 19.07.2013
comment
Попробуйте использовать @users = User.where(:id =› student)   -  person Bachan Smruty    schedule 19.07.2013


Ответы (1)


учитывая, что student_str равно 1PI12CS019;1PI10IS034;1PI11ME110, самый простой способ получить пользователей с этими идентификаторами — сначала разделить строку и запросить, используя результат.

>> student_str = '1PI12CS019;1PI10IS034;1PI11ME110'
>> ids = student_str.split(';')
>> User.where(id: ids) # should give you a list of users matching the ids in the string

Зная это, на самом деле есть 2 вещи, которые я хотел бы поднять.

  1. у вас будет более легкая жизнь, используя Rails, если вы будете придерживаться соглашения, поэтому я предлагаю вам использовать целые числа в качестве идентификаторов вместо этих строк.
  2. вместо того, чтобы сохранять идентификаторы в одном столбце, вам лучше создать другую таблицу, которая будет связывать пользователей и студентов. Проще всего это сделать через has_and_belongs_to_many. Более сложным подходом было бы использование has_many. Быстрый поиск в Google должен дать хорошие результаты.

Удачи!

person jvnill    schedule 19.07.2013
comment
Спасибо, кажется, это исправлено. что касается удостоверения личности, это удостоверение личности колледжа, с которым я работаю, и я ничего не могу с этим поделать. Я посмотрю на имеет и принадлежит многим. очень признателен. - person Alok Mysore; 19.07.2013