Module: Serega::SeregaPlugins::ExplicitManyOption

Defined in:
lib/serega/plugins/explicit_many_option/explicit_many_option.rb,
lib/serega/plugins/explicit_many_option/validations/check_opt_many.rb

Overview

Plugin :explicit_many_option

Plugin requires to add :many option when adding relationships (relationships are attributes with :serializer option specified)

Adding this plugin makes clearer to find if relationship returns array or single object

Also some plugins like :openapi load this plugin automatically as they need to know if relationship is array

Examples:

class BaseSerializer < Serega
  plugin :explicit_many_option
end

class UserSerializer < BaseSerializer
  attribute :name
end

class PostSerializer < BaseSerializer
  attribute :text
  attribute :user, serializer: UserSerializer, many: false
  attribute :comments, serializer: PostSerializer, many: true
end

Defined Under Namespace

Modules: CheckAttributeParamsInstanceMethods Classes: CheckOptMany

Class Method Summary collapse

Class Method Details

.load_plugin(serializer_class, **_opts) ⇒ void

This method returns an undefined value.

Applies plugin code to specific serializer

Parameters:

  • serializer_class (Class<Serega>)

    Current serializer class

  • _opts (Hash)

    Loaded plugins options



45
46
47
48
49
# File 'lib/serega/plugins/explicit_many_option/explicit_many_option.rb', line 45

def self.load_plugin(serializer_class, **_opts)
  require_relative "./validations/check_opt_many"

  serializer_class::CheckAttributeParams.include(CheckAttributeParamsInstanceMethods)
end

.plugin_nameSymbol

Returns Plugin name.

Returns:

  • (Symbol)

    Plugin name



33
34
35
# File 'lib/serega/plugins/explicit_many_option/explicit_many_option.rb', line 33

def self.plugin_name
  :explicit_many_option
end