Module: Meta::JsonSchema::ObjectSchemaBuilder::Locked::LockedMethodAlias

Included in:
Meta::JsonSchema::ObjectSchemaBuilder, Meta::JsonSchema::ObjectSchemaBuilder::Locked
Defined in:
lib/meta/json_schema/builders/object_schema_builder.rb

Overview

定义一些 locked 的别名方法

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/meta/json_schema/builders/object_schema_builder.rb', line 26

def method_missing(method, *args)
  if method =~ /^lock_(\w+)$/
    key = Regexp.last_match(1)
    lock(key.to_sym, *args)
  else
    super
  end
end

Instance Method Details

#add_scope(scope) ⇒ Object

我在这里说明一下 lock_scope 的逻辑。

  1. lock_scope 实际上是将 scope 传递到当前的 ObjectSchema 和它的子 Schema 中。

  2. lock_scope 会叠加,也就是如果子 schema 也有 lock_scope,那么子 Schema 会将两个 Schema 合并起来。

  3. 调用 filter(scope:) 和 to_schema_doc(scope:) 时,可以传递 scope 参数,这个 scope 遇到 lock_scope 时会合并。

  4. 这也就是说,在路由级别定义的 scope 宏会传递到下面的 Schema 中去。



18
19
20
# File 'lib/meta/json_schema/builders/object_schema_builder.rb', line 18

def add_scope(scope)
  lock_scope(scope)
end

#lock(key, value) ⇒ Object



22
23
24
# File 'lib/meta/json_schema/builders/object_schema_builder.rb', line 22

def lock(key, value)
  locked(key => value)
end