В останній версії Rails (не вдається точно сказати, який саме), ви можете використовувати as_json
метод:
@post = Post.first
hash = @post.as_json
puts hash.pretty_inspect
Виведе:
{
:name => "test",
:post_number => 20,
:active => true
}
Щоб піти трохи далі, ви можете змінити цей метод, щоб налаштувати спосіб відображення ваших атрибутів, зробивши щось подібне:
class Post < ActiveRecord::Base
def as_json(*args)
{
:name => "My name is '#{self.name}'",
:post_number => "Post ##{self.post_number}",
}
end
end
Тоді з тим самим екземпляром, що і вище, буде виводитися:
{
:name => "My name is 'test'",
:post_number => "Post #20"
}
Звичайно, це означає, що ви повинні чітко вказати, які атрибути повинні з'являтися.
Сподіваюся, це допомагає.
Редагувати:
Також ви можете перевірити дорогоцінний камінь Hashifiable .