Enumerable#to_json calls to_json on each of its members, so yup. contact.as_json was being stringified for me, i.e. having to_s called on it, so ending up with the result of that rather than the JSON data you'd expect.