Class: Subroutine::AssociationFields::Configuration

Inherits:
Fields::Configuration show all
Defined in:
lib/subroutine/association_fields/configuration.rb

Constant Summary

Constants inherited from Fields::Configuration

Fields::Configuration::INHERITABLE_OPTIONS, Fields::Configuration::NO_GROUPS, Fields::Configuration::PROTECTED_GROUP_IDENTIFIERS

Instance Attribute Summary

Attributes inherited from Fields::Configuration

#field_name

Instance Method Summary collapse

Methods inherited from Fields::Configuration

#field_reader?, #field_writer?, from, #get_default, #groups, #has_default?, #in_group?, #inheritable_options, #initialize, #inspect, #mass_assignable?, #merge, #sanitize_options

Constructor Details

This class inherits a constructor from Subroutine::Fields::Configuration

Instance Method Details

#asObject



26
27
28
# File 'lib/subroutine/association_fields/configuration.rb', line 26

def as
  config[:as] || field_name
end

#behaviorObject



62
63
64
# File 'lib/subroutine/association_fields/configuration.rb', line 62

def behavior
  :association
end

#build_foreign_key_fieldObject



50
51
52
# File 'lib/subroutine/association_fields/configuration.rb', line 50

def build_foreign_key_field
  build_child_field(foreign_key_method, type: :integer)
end

#build_foreign_type_fieldObject



54
55
56
# File 'lib/subroutine/association_fields/configuration.rb', line 54

def build_foreign_type_field
  build_child_field(foreign_type_method, type: :string)
end

#class_nameObject



30
31
32
# File 'lib/subroutine/association_fields/configuration.rb', line 30

def class_name
  config[:class_name]&.to_s
end

#foreign_keyObject



38
39
40
# File 'lib/subroutine/association_fields/configuration.rb', line 38

def foreign_key
  config[:foreign_key]
end

#foreign_key_methodObject



42
43
44
# File 'lib/subroutine/association_fields/configuration.rb', line 42

def foreign_key_method
  foreign_key || "#{field_name}_id"
end

#foreign_type_methodObject



46
47
48
# File 'lib/subroutine/association_fields/configuration.rb', line 46

def foreign_type_method
  foreign_key_method.gsub(/_id$/, "_type")
end

#inferred_class_nameObject



34
35
36
# File 'lib/subroutine/association_fields/configuration.rb', line 34

def inferred_class_name
  class_name || as.to_s.camelize
end

#polymorphic?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/subroutine/association_fields/configuration.rb', line 22

def polymorphic?
  !!config[:polymorphic]
end

#required_modulesObject



18
19
20
# File 'lib/subroutine/association_fields/configuration.rb', line 18

def required_modules
  super + [::Subroutine::AssociationFields]
end

#unscoped?Boolean

Returns:

  • (Boolean)


58
59
60
# File 'lib/subroutine/association_fields/configuration.rb', line 58

def unscoped?
  !!config[:unscoped]
end

#validate!Object



10
11
12
13
14
15
16
# File 'lib/subroutine/association_fields/configuration.rb', line 10

def validate!
  super

  if as && foreign_key
    raise ArgumentError, ":as and :foreign_key options should not be provided together to an association invocation"
  end
end