Trong hầu hết các phiên bản Rails gần đây (không thể biết chính xác cái nào), bạn có thể sử dụng as_json
phương thức:
@post = Post.first
hash = @post.as_json
puts hash.pretty_inspect
Sẽ xuất:
{
:name => "test",
:post_number => 20,
:active => true
}
Để đi xa hơn một chút, bạn có thể ghi đè phương thức đó để tùy chỉnh cách xuất hiện các thuộc tính của bạn, bằng cách thực hiện như sau:
class Post < ActiveRecord::Base
def as_json(*args)
{
:name => "My name is '#{self.name}'",
:post_number => "Post ##{self.post_number}",
}
end
end
Sau đó, với cùng một ví dụ như trên, sẽ xuất ra:
{
:name => "My name is 'test'",
:post_number => "Post #20"
}
Tất nhiên điều này có nghĩa là bạn phải xác định rõ ràng thuộc tính nào phải xuất hiện.
Hi vọng điêu nay co ich.
BIÊN TẬP :
Ngoài ra, bạn có thể kiểm tra đá quý Hashifiable .