假设我有一个属于用户的模型帖子。要转换为 json,我会这样做
@reply.to_json(:include => {:user => {:only => [:email, :id]},
:only => [:title, :id])
但是,我想为此设置一些默认值,因此我不必每次都指定 :only。我正在尝试覆盖 as_json 来完成此操作。当我在用户模型中添加 as_json 时,当我执行 @user.to_json 时会调用它,但当用户包含在 @reply.to_json 中时,我为用户覆盖的 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 中 to_json 的默认值为 :include,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5000870/