una*_*ana 25 json ruby-on-rails
我们假设我有一个属于用户的模型帖子.要转换为json,我会做这样的事情
@reply.to_json(:include => {:user => {:only => [:email, :id]},
:only => [:title, :id])
Run Code Online (Sandbox Code Playgroud)
但是,我想为此设置一些默认值,所以我不必每次都指定:我试图覆盖as_json来实现这一目标.当我在User模型中添加as_json时,在我执行@ user.to_json时调用它,但是当用户包含在@ reply.to_json中时,忽略了用户的重写as_json.
我该如何工作?
谢谢
Boo*_*age 33
您可以通过覆盖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
Run Code Online (Sandbox Code Playgroud)
这将影响到所有序列化的方法,其中包括serializable_hash
,to_json
,和to_xml
.
您可以向 ActiveRecord::Base 添加另一个方法,例如 self.to_minimal_json(*only_fields) 并在那里构建 .to_json 调用。
不起眼,但可能有用。
归档时间: |
|
查看次数: |
9750 次 |
最近记录: |