【问题标题】:Rail Object Relationships & JSON Rendering铁路对象关系和 JSON 渲染
【发布时间】:2011-12-27 19:25:35
【问题描述】:

我已经知道如何将 has_many 和 has_one 关系包含到我的 JSON 渲染中。我什至知道这样做时如何排除某些属性。对于那些不知道的人,这是一个好帖子:

Rails Object Relationships and JSON Rendering

但是,我不知道该怎么做是让它在子对象上使用 as_json,这样我就不必在每个父关系上重新声明它。

所以如果我有这样的东西......

class Customer < ActiveRecord::Base
  has_many :orders

  def as_json(options={ })
    super({ :except => :Password, :include => [:orders] }.merge(options))
  end
end

class Order < ActiveRecord::Base
  has_one :customer

  def as_json(options={ })
    super({ :include => [:customer] }.merge(options))
  end
end

当您从订单角度查看客户密码时,它最终会发回客户密码。

理想情况下,我希望它遵循模型中定义的 as_json 规则,因此我不必为在每个子对象上包含 :customer 设置例外。

附: - 这只是一个例子,不是真实世界的场景。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 json activerecord


    【解决方案1】:

    我鼓励您对所有模型使用 RABL gem,而不是覆盖 as_json。仅使用所需的参数/关系来定义 JSON 响应要容易得多。您还可以轻松创建父/子嵌套。

    https://github.com/nesquena/rabl

    【讨论】:

    • 如何使用 rabl 动态改变输出?有时我想根据谁在请求数据来更改 json 中返回的内容。
    • 您使用与通常相同的 Ruby 语法(即 ifunless 语句等)。
    猜你喜欢
    • 2011-03-28
    • 2015-12-24
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多