Class: Subroutine::AssociationFields::Configuration
Constant Summary
Fields::Configuration::INHERITABLE_OPTIONS, Fields::Configuration::NO_GROUPS, Fields::Configuration::PROTECTED_GROUP_IDENTIFIERS
Instance Attribute Summary
#field_name
Instance Method Summary
collapse
#field_reader?, #field_writer?, from, #get_default, #groups, #has_default?, #in_group?, #inheritable_options, #initialize, #inspect, #mass_assignable?, #merge, #sanitize_options
Instance Method Details
#as ⇒ Object
26
27
28
|
# File 'lib/subroutine/association_fields/configuration.rb', line 26
def as
config[:as] || field_name
end
|
#behavior ⇒ Object
62
63
64
|
# File 'lib/subroutine/association_fields/configuration.rb', line 62
def behavior
:association
end
|
#build_foreign_key_field ⇒ Object
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_field ⇒ Object
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_name ⇒ Object
30
31
32
|
# File 'lib/subroutine/association_fields/configuration.rb', line 30
def class_name
config[:class_name]&.to_s
end
|
#foreign_key ⇒ Object
38
39
40
|
# File 'lib/subroutine/association_fields/configuration.rb', line 38
def foreign_key
config[:foreign_key]
end
|
#foreign_key_method ⇒ Object
42
43
44
|
# File 'lib/subroutine/association_fields/configuration.rb', line 42
def foreign_key_method
foreign_key || "#{field_name}_id"
end
|
#foreign_type_method ⇒ Object
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_name ⇒ Object
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
22
23
24
|
# File 'lib/subroutine/association_fields/configuration.rb', line 22
def polymorphic?
!!config[:polymorphic]
end
|
#required_modules ⇒ Object
18
19
20
|
# File 'lib/subroutine/association_fields/configuration.rb', line 18
def required_modules
super + [::Subroutine::AssociationFields]
end
|
#unscoped? ⇒ 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
|