получить атрибут модели динамически в рельсах 3 - PullRequest
10 голосов
/ 13 мая 2011

Как я могу получить атрибут из объекта модели динамически? У меня есть атрибут объекта User в виде строки:

u = User.find(1)

Могу ли я сделать что-то вроде u.get("user_id")

Ответы [ 5 ]

24 голосов
/ 13 мая 2011

Вы можете попробовать использовать экземпляр модели ActiveRecord как хеш.

u = User.find(1)
name = u[:name]
field = "first_name"
first_name = u[field]
12 голосов
/ 13 мая 2011

Еще один подход:

attr = :first_name
@user.read_attribute attr  
5 голосов
/ 13 мая 2011

Попробуйте это

user = User.find(1)

тогда что-то вроде этого должно делать то, что вам нужно

user.send('field_name')
1 голос
/ 13 мая 2011

Попробуйте это

u = User.find(1)
attr = "first_name"
u.send(attr)
0 голосов
/ 13 мая 2011

Не уверен, что я полностью понимаю ваши вопросы.Попробуйте что-то вроде:

User.find(1).name

, если вы хотите получить только те атрибуты БД, которые вы можете сделать:

User.find(1,:select => :name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...