有没有办法在 Rails Jbuilder 模板中隐藏属性?
Is there any way to hide attributes in a Rails Jbuilder template?
我知道您可以像这样明确列出字段,
json.(model, :field_one, :field_two, :field_three)
但是有没有类似下面的,
json.(model, except: :field_two)
哪个会输出除调用的那个以外的所有模型字段?
我曾经做过这样的事情。
获取模型的所有所需属性的数组
model.attributes.keys.map { |key| key.to_sym } - [:field_one, :field_two]
可以这样写
model.attributes.keys.map(&:to_sym) - [:field_one, :field_two]
然后在传入jbuilder的同时splat数组
json.(model, *(model.attributes.keys.map(&:to_sym) - [:field_one, :field_two]))
尝试json.merge! model.attributes.except("field_one", "field_two")
这个gem就是你需要的。
json.except! @resource, :id, :updated_at
对于非 ActiveRecord 对象,此类似模式有效 (Rails 4)
json.merge! @some_object.as_json.except("not_this_one")
我知道您可以像这样明确列出字段,
json.(model, :field_one, :field_two, :field_three)
但是有没有类似下面的,
json.(model, except: :field_two)
哪个会输出除调用的那个以外的所有模型字段?
我曾经做过这样的事情。 获取模型的所有所需属性的数组
model.attributes.keys.map { |key| key.to_sym } - [:field_one, :field_two]
可以这样写
model.attributes.keys.map(&:to_sym) - [:field_one, :field_two]
然后在传入jbuilder的同时splat数组
json.(model, *(model.attributes.keys.map(&:to_sym) - [:field_one, :field_two]))
尝试json.merge! model.attributes.except("field_one", "field_two")
这个gem就是你需要的。
json.except! @resource, :id, :updated_at
对于非 ActiveRecord 对象,此类似模式有效 (Rails 4)
json.merge! @some_object.as_json.except("not_this_one")