рельсы - как ссылаться на модель через строку? - PullRequest
1 голос
/ 02 октября 2009

например

str_modelname="User"

и я бы хотел сделать

str_modelname.find(:first)

чтобы найти первого пользователя, но, конечно, это не работает

Ответы [ 3 ]

7 голосов
/ 02 октября 2009
str_modelname.classify.constantize.find(:first)
2 голосов
/ 02 октября 2009

Есть несколько способов, одним из которых может быть использование хеша, например:

models = {"User" => User, "AnotherModel" => AnotherModel}

А потом:

models[name] ? models[name].find(:first) : nil

Зачем тебе это? В зависимости от того, что вам нужно сделать, могут быть более эффективные решения.

1 голос
/ 02 октября 2009

У меня успех с этим фрагментом кода, но я не буду утверждать, что это лучший способ:

str = "User"
p Kernel.const_get(str).find(:first)

Я основал это на этой технике .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...