How to convert ActiveRecord results into an array of hashes
as_json
You should use as_json
method which converts ActiveRecord objects to Ruby Hashes despite its name
tasks_records = TaskStoreStatus.alltasks_records = tasks_records.as_json# You can now add new records and return the result as json by calling `to_json`tasks_records << TaskStoreStatus.last.as_jsontasks_records << { :task_id => 10, :store_name => "Koramanagala", :store_region => "India" }tasks_records.to_json
serializable_hash
You can also convert any ActiveRecord objects to a Hash with serializable_hash
and you can convert any ActiveRecord results to an Array with to_a
, so for your example :
tasks_records = TaskStoreStatus.alltasks_records.to_a.map(&:serializable_hash)
And if you want an ugly solution for Rails prior to v2.3
JSON.parse(tasks_records.to_json) # please don't do it
May be?
result.map(&:attributes)
If you need symbols keys:
result.map { |r| r.attributes.symbolize_keys }
For current ActiveRecord (4.2.4+) there is a method to_hash
on the Result
object that returns an array of hashes. You can then map over it and convert to symbolized hashes:
# Get an array of hashes representing the result (column => value):result.to_hash# => [{"id" => 1, "title" => "title_1", "body" => "body_1"}, {"id" => 2, "title" => "title_2", "body" => "body_2"}, ... ]result.to_hash.map(&:symbolize_keys)# => [{:id => 1, :title => "title_1", :body => "body_1"}, {:id => 2, :title => "title_2", :body => "body_2"}, ... ]