ruby-on-rails – Rails 4 – 从渲染中删除“created_at”和“up
发布时间:2020-12-17 03:49:14 所属栏目:百科 来源:网络整理
导读:当我想从一个资源中删除这些数据时,我会: @teams = Team.allrender json: @teams,:except = [:created_at,:updated_at], 我怀疑的是,当我有许多像这样的包括: @teams = Team.allrender json: @teams,:include = [:stadiums,:scores,:links,:rounds] 如何从
当我想从一个资源中删除这些数据时,我会:
@teams = Team.all render json: @teams,:except => [:created_at,:updated_at], 我怀疑的是,当我有许多像这样的包括: @teams = Team.all render json: @teams,:include => [:stadiums,:scores,:links,:rounds] 如何从所有这些中删除? 解决方法
更正:你可以做类似的事情
render json: @teams.to_json(:except => [:created_at,:include => { :stadiums => { :except => [:created_at,:updated_at]},... }) 没有迭代相关模型,获取属性哈希并选择所需属性,没有简单的方法可以做到这一点. 这些用例通常使用json模板DSL(如jbuilder或rabl)优雅地解决. 使用jbuilder来说明这一点: Jbuilder.encode do |json| json.array! @teams do |team| json.name team.name json.stadiums team.stadiums do |stadium| json.name stadium.name # Other relevant attributes from stadium end # Likewise for scores,links,rounds end end 哪个会产生输出: [{ name: "someteamname",stadiums: { name: "stadiumname" },... },{...},...] 如果您发现这个用例过于冗长,正如@liamneesonsarmsauce在评论中指出的那样另一个解决方案就是使用ActiveModel Serializers 使用此方法,您可以为每个模型指定一个序列化程序类,列出允许的属性,这些属性将成为json响应的一部分.例如 class TeamSerializer < ActiveModel::Serializer attributes :id,:name # Whitelisted attributes has_many :stadiums has_many :scores has_many :links has_many :rounds end 您也可以为关联模型定义类似的序列化程序. 由于关联是以rails开发人员已经熟悉的方式无缝处理的,除非您需要对生成的json响应进行大量自定义,否则这是一种更简洁的方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |