W najnowszej wersji Railsów (nie można jednak powiedzieć, która dokładnie), możesz użyć as_json
metody:
@post = Post.first
hash = @post.as_json
puts hash.pretty_inspect
Wyświetli:
{
:name => "test",
:post_number => 20,
:active => true
}
Aby przejść dalej, możesz zastąpić tę metodę, aby dostosować sposób wyświetlania atrybutów, wykonując coś takiego:
class Post < ActiveRecord::Base
def as_json(*args)
{
:name => "My name is '#{self.name}'",
:post_number => "Post ##{self.post_number}",
}
end
end
Następnie, w tym samym wystąpieniu, co powyżej, wyświetli:
{
:name => "My name is 'test'",
:post_number => "Post #20"
}
Oznacza to oczywiście, że musisz wyraźnie określić, które atrybuty muszą się pojawić.
Mam nadzieję że to pomoże.
EDYTOWAĆ :
Możesz również sprawdzić klejnot Hashifiable .