Rails中to_json的默认值为:include

假设我有一个属于用户的模型帖子。为了转换为json,我做了如下操作

@reply.to_json(:include=>{:user=>{:only=>[:email,:id]},
:only=>[:title,:id])

但是,我想为此设置一些默认值,这样我就不必指定:仅限每次。我正在尝试覆盖as_json以实现这一点。当我在用户模型中添加as_json时,当我添加@User.to_json时会调用它,但当@reply.to_json中包含用户时,会忽略我覆盖的User as_json

我该怎么做

谢谢

您可以通过覆盖模型中的serializable_hash来实现这一点,如下所示:

类回复<ActiveRecord::Base
def序列化_散列(选项={})
选项={
:include=>{:user=>{:only=>[:email,:id]},
:only=>[:title,:id]
}.更新(选项)
超级(选项)
终止
终止

这将影响所有可序列化的方法,包括serializable_hashto_jsonto_xml

发表评论