first_name
и last_name
- это атрибуты БД, которые печатаются в методе проверки.
Если вы хотите получить доступ к full_name
, вызовите full_name
для объекта пользователя.
User.last.full_name
Так что если вы хотите хеш пользователей с full_name
в качестве ключа:
@users = {}
User.all.each{|u| @users[u.full_name] = u}
Редактировать 1
Вызов User.last
возвращает объект User
. То, что будет напечатано в консоли, зависит от того, как реализован метод проверки объекта. В случае ActiveRecord, атрибуты базы данных печатаются.
Если вам нужно полное имя, вам нужно вызвать метод full_name
для возвращенного объекта User.
Мне все еще не ясно, что вы пытаетесь сделать.
Редактировать 2
u = User.last
[u.full_name, u.age, u.phone] # array
{:full_name => u.full_name, :age => u.age, :phone => u.phone } #hash
Редактировать 3
Если вы хотите получить формат JSON из объекта, сделайте следующее
u.to_json(:methods => [:full_name])
Подробнее см. В документации to_json
.
Редактировать 4
Метод to_json имеет опции include
и exclude
для выбора необходимых атрибутов. Метод to_json дает вам полный контроль над выбором данных. Для получения более подробной информации см. Ссылку на документацию выше.
u.to_json(:methods => [:full_name], :include => [:first_name, :last_name])
Если вам нужно включить дополнительные атрибуты, добавьте их в массив :include
в приведенном выше примере.
Редактировать 5
Чтобы использовать это вместе с response_with, сделайте следующее:
respond_with(@users, :methods => [:full_name],
:include => [:first_name, :last_name])