#ruby-on-rails
#ruby-on-rails
Вопрос:
Я хочу использовать send
или public_send
для Model
имени. но пока я использую send
или public_send
, я получаю следующую ошибку:
send("User").all
#NoMethodError: undefined method 'User' for main:Object
Есть ли какой-нибудь способ справиться с этой проблемой? (даже без send
или public_send
) если есть, пожалуйста, помогите мне справиться с этим.
Спасибо
Ответ №1:
вы хотите получить имя класса из строки, что-то вроде этого будет работать:
Object.const_get("User").all
Это приведет к ошибке, если класс не найден:
NameError: uninitialized constant User
Если вы хотите что-то, что вернет nil
вместо ошибки, вы можете попробовать:
"User".safe_constantize
Ответ №2:
send
или public_send
только для вызова метода. Если вы хотите динамически изменять имя модели, вы можете сделать что-то вроде "model_name".constantize.all