有没有办法在Rails Jbuilder模板中隐藏属性?

7

我知道你可以明确地列出字段,就像这样:

json.(model, :field_one, :field_two, :field_three)

但是否有类似以下的东西,
json.(model, except: :field_two)

如何输出模型中除了指定字段以外的所有字段?


1
你尝试过 json.merge! model.attributes.except("field_one", "field_two") 吗? - vich
@mmichael,这个方法可行!似乎应该有更简单的方法... - sambecker
4个回答

11

尝试使用json.merge!model.attributes.except("field_one", "field_two")


1

我曾经做过类似的事情。 获取模型的所有所需属性的数组

model.attributes.keys.map { |key| key.to_sym } - [:field_one, :field_two]

Which can be written like

 model.attributes.keys.map(&:to_sym) - [:field_one, :field_two]

然后在传递jbuilder时扩展数组。
json.(model, *(model.attributes.keys.map(&:to_sym) - [:field_one, :field_two]))

0

对于非 ActiveRecord 对象,这个类似的模式也适用(Rails 4)

 json.merge! @some_object.as_json.except("not_this_one")

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接