rails объединяет параметры в контроллере

#ruby-on-rails #parameters #controller

#ruby-on-rails #параметры #контроллер

Вопрос:

Надеюсь, это немного понятнее. Извините, но я очень новичок в программировании в целом. У меня есть несколько таблиц, которые я должен запрашивать последовательно, чтобы получить нужный мне массив. Следующая логика запроса выглядит следующим образом:

это дает мне массив, основанный на хранилище: id

 store = Stores.find(params[:id])
  

это дает мне другой массив, основанный на параметре .location, найденном в хранилище таблиц, где это значение равно идентификатору строки в отделах таблицы

 department = Departments.find(store.location)
  

Мне нужно выполнить один последний запрос, но для этого мне нужно выяснить, какой день встречи необходим. Для этого мне нужно создать параметр day_of_meeting, найденный в табличных хранилищах. Я пытаюсь вызвать его из массива выше и создать новую переменную. В отделах таблиц I есть такие параметры, как day_1, day_2 и так далее. Мне нужно иметь возможность вызывать что-то вроде department.day_1 или department.day_2. Таким образом, я пытаюсь фактически создать переменную, присоединив слова «department.day_» к переменной store.day_of_meeting, которая будет равна некоторому целому числу, создавая department.day_1…

 which_day = ["department.day_", store.day_of_meeting].join("")
  

Этот запрос finds использует значение, найденное из переменной department.day_1, для запроса таблицы Meeting, чтобы найти значения в соответствующей строке.

 meeting = Meeting.find(which_day)
  

Делает ли это мою проблему более понятной для понимания?

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

1. Вы должны сделать это в модели.

2. Не могли бы вы объяснить, как я могу определить эту логику в модели?

3. Я читаю ваш вопрос снова и снова, и я даже не уверен, понимаю ли я, что вы вообще имеете в виду (для меня это не имеет смысла), но поскольку вы не используете params ни одного раза, но интенсивно используете атрибуты объекта (модели), я думаю, что контроллер — неправильное место для его размещения. Опять же, я думаю, что я не понимаю, чего вы хотите достичь.

4. Я переписал вопрос, так что, надеюсь, он немного понятнее. Имеет ли это какой-либо смысл?

5. когда вы говорите this gives me an array... . Вы ошибаетесь, Stores.find(your_id) это ActiveRecord объект

Ответ №1:

find метод может принимать только такие параметры, как Meeting.find(1) или Meeting.find («1-xx»).

итак, что вам нужно Meeting.find(department.send("day_" store.day_of_meeting.to_s))

Надеюсь помочь!

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

1. Я получаю «нет неявного преобразования Fixnum в строку». Значение является целым числом, так связано ли это с добавлением текста «day_» инициализатор (store.day_of_meeting)?

2. это потому, что store.day_of_meeting возвращает целое число, поэтому его нужно преобразовать в строку, я обновил!

3. Идеальный. Спасибо. Я продолжал использовать .to_i — немой с моей стороны