ruby-on-rails - 数组的未定义方法 `serializable_hash'

标签 ruby-on-rails serialization activerecord mongodb mongoid

我使用 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]}})

我开始使用这个很棒的 gem ( 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>

此错误仅在我尝试包含一个数组时发生,例如:Answer has_many likers。

我怀疑单个对象中包含的数组没有 serializable_hash 方法。

我该如何解决这个问题?任何想法将不胜感激!

最佳答案

看看这篇来自 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) 值得一看。

关于ruby-on-rails - 数组的未定义方法 `serializable_hash',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6868869/

相关文章:

ruby-on-rails - Rails 3 包括翻译 globalize3 activerecord

ruby-on-rails - 列删除后出现 Rails DB heroku 迁移错误

ruby-on-rails - Yaml 问题,在 Yaml 中存储某些类型的字符有什么问题吗?

javascript - 如何启用按钮检查单选按钮

gwt - 使用带有 HashMap 的 GWT 的 AutoBean 反序列化时出现 NullPointerException

ruby-on-rails-3 - 在 Rails 3 查询中使用 count() 和 group(),还是只使用 sql?

ruby-on-rails - 访问 has_many 中的连接模型属性 : though relationship

mysql - 'rake db:create' 或 'rake about' 上的 RoR 4 错误

objective-c - Restkit在附加图像时将子对象数组序列化为字符串

java - getExtras().getSerialized(key) 和 getSerializedExtra(name) 之间有什么区别