2012-02-14 1 views
1

Y at-il un moyen de charger l'association de modèle sans chargement ardent? Im essayant de pousser un objet au navigateur avec des associations de modèles inclus.Les rails incluent des associations de modèles

push_to_user pousse l'objet @todo dans le navigateur. un auditeur javascript lira les données et les imprimera.

Le problème que j'ai, c'est que @todo n'inclut pas son association de modèle (par exemple "catégories"). comment puis-je inclure cela?

@todo = Todo.find(1) 
puts @todo.item.categories # eager load categories. works 

# push object to pusher 
Pusher.push_to_user(@todo, user) 

# custom pusher method 
def self.push_to_user(todo, user) 
    Pusher['private-1'].trigger('activity', {:todo => todo, :user => user}) 
end 

# Browser 
console.log(todo) # categories are missing 

grâce pete

Répondre

0

Je pense que le mieux est d'ajouter une nouvelle clé avec cette catégorie:

def self.push_to_user(todo, user) 
    Pusher['private-1'].trigger('activity', {:todo => todo, :categories => todo.categories, :user => user}) 
end 
+0

hm ouais ça marcherait. mais y a-t-il une autre solution? Je veux garder tout ce qui concerne @todo dans cet objet, si possible – user896715

+0

Je pense que vous avez besoin de générer un # serializable_hash de votre todo avec ': include =>: categories'. J'ajoute une autre réponse à cette proposition. – shingara

0

Vous pouvez appeler une méthode #serializable_hash sur votre todo avec un :include => categories

def self.push_to_user(todo, user) 
    Pusher['private-1'].trigger('activity', {:todo => todo.serializable_hash(:include => :categories), :user => user}) 
end 

Je ne teste pas cette solution mais je peux travaux.

Questions connexes