Module: ActiveModel::AsJsonFilter

Extended by:
ActiveSupport::Concern
Defined in:
lib/active_model_as_json_filter.rb

Defined Under Namespace

Classes: AsJsonOptions

Constant Summary collapse

OptionMethods =

默认公共字段配置

以下是个属性在配置时直接覆盖即可。

[:default_only_fields, :default_except_fields, :default_methods_fields]

Instance Method Summary collapse

Instance Method Details

#as_json(options = {}) ⇒ Object

InstanceMethods



60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/active_model_as_json_filter.rb', line 60

def as_json options = {}
  # 1. 配置参数
  _o = {}
  AsJsonOptions::OptionFields.each do |field|
    _v = Array(self.class.as_json_options.send(field)).flatten.to_a.map(&:to_sym)
    _o[field] = _v if not _v.empty?
  end
  result = super _o.merge(options)
  # 2. 两次全局和局部回调
  result = ActiveModel::AsJsonFilter.finalizer_proc.call(result)
  result = self.class.as_json_options.finalizer_proc.call(result, self)

  return result
end