假设我有一个属于用户的模型Post。要转换为json,我要做这样的事情
@reply.to_json(:include => {:user => {:only => [:email, :id]},
:only => [:title, :id])
但是,我想为此设置一些默认值,因此不必每次都指定:only。我正在尝试覆盖as_json以完成此操作。当我在用户模型中添加as_json时,当我执行@ user.to_json时会调用该方法,但是当用户包含在@ reply.to_json中时,我为User覆盖的as_json将被忽略。
我该如何工作?
谢谢
最佳答案
您可以通过在模型中覆盖serializable_hash
来做到这一点,如下所示:
class Reply < ActiveRecord::Base
def serializable_hash(options={})
options = {
:include => {:user => {:only => [:email, :id]},
:only => [:title, :id]
}.update(options)
super(options)
end
end
这将影响所有可序列化的方法,包括
serializable_hash
,to_json
和to_xml
。关于ruby-on-rails - 在Rails中使用:include默认为to_json,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5000870/