Nab*_*oui 10 serialization attributes ruby-on-rails notnull
我想使用一个渲染非null属性的序列化程序
class PersonSerializer < ActiveModel::Serializer
attributes :id, :name, :phone, :address, :email
end
Run Code Online (Sandbox Code Playgroud)
这可能吗.
非常感谢.
解:
class PersonSerializer < ActiveModel::Serializer
attributes :id, :name, :phone, :address, :email
def attributes
hash = super
hash.each {|key, value|
if value.nil?
hash.delete(key)
end
}
hash
end
end
Run Code Online (Sandbox Code Playgroud)
And*_*tti 15
从版本0.10.x的active_model_serializer宝石,你必须要覆盖的方法serializable_hash,而不是attributes:
# place this method inside NullAttributesRemover or directly inside serializer class
def serializable_hash(adapter_options = nil, options = {}, adapter_instance = self.class.serialization_adapter_instance)
hash = super
hash.each { |key, value| hash.delete(key) if value.nil? }
hash
end
Run Code Online (Sandbox Code Playgroud)
yar*_*aru 10
感谢Nabila Hamdaoui的解决方案.我通过模块使其更加可重复使用.
null_attribute_remover.rb
module NullAttributesRemover
def attributes
hash = super
hash.each do |key, value|
if value.nil?
hash.delete(key)
end
end
hash
end
end
Run Code Online (Sandbox Code Playgroud)
用法:
swimlane_serializer.rb
class SwimlaneSerializer < ActiveModel::Serializer
include NullAttributesRemover
attributes :id, :name, :wipMaxLimit
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6561 次 |
| 最近记录: |