2012-02-14 7 views
1

気軽に読み込んでモデルアソシエーションを読み込む方法はありますか?私はモデルの関連付けを含むオブジェクトをブラウザにプッシュしようとしています。Railsにモデルアソシエーションが含まれています

push_to_userは、@todoオブジェクトをブラウザにプッシュします。 JavaScriptのリスナーがデータを読み取り、それを印刷します。

@todoには、モデルの関連付け(例:「カテゴリ」)が含まれていません。どうすればそれを含めることができますか?

@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 

おかげ ピート

答えて

0

私はより良いが、このカテゴリを持つ新しいキーを追加していると思う:

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

これはうまくいくでしょう。しかし、もう一つの解決策はありますか? できるだけこの1つのオブジェクトに@todoに関連するすべてのものを残したいと思っています – user896715

+0

あなたはtodoの '#include =>:categories'で'#serializable_hash'を生成する必要があると思います。私はこの命題に別の答えを加える。 – shingara

0

あなたは:include => categories

def self.push_to_user(todo, user) 
    Pusher['private-1'].trigger('activity', {:todo => todo.serializable_hash(:include => :categories), :user => user}) 
end 
であなたのTODOに #serializable_hashメソッドを呼び出すことができます

私はこのソリューションをテストしませんが、働く

関連する問題