Actuellement, je crée un objet JSON en faisant:
@users = User.all
@users.each do |user|
@userlist << {
:id => user.id,
:fname => user.fname,
:lname => user.lname,
:photo => user.profile_pic.url(:small)
}
end
Mon défi est que je souhaite maintenant inclure les enregistrements du @contacts
table qui a un ensemble de champs différent du modèle User
.
J'ai essayé de faire
@users = User.all
@contacts = current_user.contacts
@users << @contacts
Mais ça n'a pas marché. Quelle est la meilleure façon de combiner deux modèles similaires en un seul objet JSON?
json = User.all( :include => :contacts).to_json( :include => :contacts )
Désolé, permettez-moi de donner une réponse plus complète pour ce que vous faites ...
@users = User.all( :include => :contacts )
@userlist = @users.map do |u|
{ :id => u.id, :fname => u.fname, :lname => u.lname, :photo => u.profile_pic.url(:small), :contacts => u.contacts }
end
json = @userlist.to_json
Ok, alors oubliez-moi - je passais une mauvaise journée et j'ai complètement raté le point de votre question. Vous voulez du JSON qui inclut deux ensembles de données non liés. Tous les utilisateurs, et les contacts uniquement pour l'utilisateur actuel.
Vous voulez créer un nouveau hachage pour cela alors, quelque chose comme ça ...
@users = User.all
@userlist = @users.map do |u|
{ :id => u.id, :fname => u.fname, :lname => u.lname, :photo => u.profile_pic.url(:small) }
end
json = { :users => @userlist, :contacts => current_user.contacts }.to_json
@userlist = @users.map do |u|
u.attributes.merge!(:contacts=>current_user.contacts)
end
json = @userlist.to_json