2012-02-14 243 views
1

有沒有一種方法來加載模型關聯而無需加載?即時通訊嘗試將對象推送到包含模型關聯的瀏覽器。Rails包含模型關聯

push_to_user@todo對象推送到瀏覽器。一個JavaScript偵聽器將讀取數據並將其打印出來。

im問題是@todo不包括它的模型關聯(例如「categories」)。我怎麼能包括這個?

@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

嗯是的,這將工作。但還有其他解決方案嗎? 我有點想在這個對象中保留與@todo相關的所有東西,如果可能的話 – user896715 2012-02-14 16:22:25

+0

我想你需要用':include =>:categories'生成一個'#serializable_hash'你的待辦事項。我在這個提議中增加了另一個答案。 – shingara 2012-02-15 10:18:58

0

你可以調用一個#serializable_hash方法在你的待辦事項與:include => categories

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

我不測試這個解決方案,但可以作品。