#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 — немой с моей стороны