2012-02-14 1 views
1

Есть ли способ загрузить модельную ассоциацию без активной загрузки? im, пытающийся вставить объект в браузер с включенными ассоциациями моделей.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

hm да, это сработает. но есть ли другое решение? i kinda хочу сохранить все, что связано с @todo в этом одном объекте, если возможно – user896715

+0

Я думаю, вам нужно создать '# serializable_hash' вашего todo с помощью': include =>: categories'. Я добавляю еще один ответ с этим предложением. – shingara

0

Вы можете вызвать метод #serializable_hash на вашем TODO с :include => categories

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

Я не тестирую это решение, но могу работает.