Dans la version la plus récente de Rails (je ne peux pas dire laquelle exactement), vous pouviez utiliser la fonction as_json
méthode :
@post = Post.first
hash = @post.as_json
puts hash.pretty_inspect
Rendement :
{
:name => "test",
:post_number => 20,
:active => true
}
Pour aller un peu plus loin, vous pouvez remplacer cette méthode afin de personnaliser la façon dont vos attributs apparaissent, en faisant quelque chose comme ceci :
class Post < ActiveRecord::Base
def as_json(*args)
{
:name => "My name is '#{self.name}'",
:post_number => "Post ##{self.post_number}",
}
end
end
Ensuite, avec la même instance que ci-dessus, on obtiendra :
{
:name => "My name is 'test'",
:post_number => "Post #20"
}
Cela signifie bien sûr que vous devez spécifier explicitement les attributs qui doivent apparaître.
J'espère que cela vous aidera.
EDIT :
Vous pouvez également vérifier le Hashifiable gemme.