我使用mongoid作为我的orm,我在结果集上调用to_json。初始实现工作正常,除了所有内容都是动态加载的事实(而不是预先加载)
以下简化的架构和代码:
Answer has_many likers
all_answers=Answer.includes(:likers).all.map{|a| a}
all_answer.to_json(:only=>[:text],:include => {:likers=>{:only=>[:_id,:nickname]}})
我开始使用这个伟大的宝石(mongoid_eager_loading),效果很好。但是,当我在结果集上调用to_json时
all_answers=Answer.includes(:user, :question,:likers,:comments).all.map{|a| a}
all_answer.to_json(:only=>[:text],:include => {:likers=>{:only=>[:_id,:nickname]}})
我会收到此错误:
undefined method `serializable_hash' for #<Array:0x00000105b3d020>
只有当我尝试包含数组时才会出现此错误:答案has_many likers。
我怀疑单个对象中包含的数组没有serializable_hash方法。
我该如何解决这个问题?任何想法将不胜感激!
答案 0 :(得分:0)
看看Miso Engineering的这篇文章:
http://engineering.gomiso.com/2011/05/16/if-youre-using-to_json-youre-doing-it-wrong/
如果您将模型作为JSON推出,那么RABL gem(https://github.com/nesquena/rabl)值得一看。