Rails包括模型关联

时间:2012-02-14 15:05:56

标签: ruby-on-rails ruby-on-rails-3 pusher

有没有办法加载模型关联而不需要加载?即时尝试将对象推送到包含模型关联的浏览器。

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

感谢 皮特

2 个答案:

答案 0 :(得分:0)

我认为更好的是添加这个类别的新密钥:

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

答案 1 :(得分: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

我不测试此解决方案但可行。