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
33
34
35
|
# File 'lib/subroutine/association_fields/configuration.rb', line 33
def as
config[:as] || field_name
end
|
#behavior ⇒ Object
69
70
71
|
# File 'lib/subroutine/association_fields/configuration.rb', line 69
def behavior
:association
end
|
#build_foreign_key_field ⇒ Object
57
58
59
|
# File 'lib/subroutine/association_fields/configuration.rb', line 57
def build_foreign_key_field
build_child_field(foreign_key_method, type: :integer)
end
|
#build_foreign_type_field ⇒ Object
61
62
63
|
# File 'lib/subroutine/association_fields/configuration.rb', line 61
def build_foreign_type_field
build_child_field(foreign_type_method, type: :string)
end
|
#class_name ⇒ Object
37
38
39
|
# File 'lib/subroutine/association_fields/configuration.rb', line 37
def class_name
config[:class_name]&.to_s
end
|
#foreign_key ⇒ Object
45
46
47
|
# File 'lib/subroutine/association_fields/configuration.rb', line 45
def foreign_key
config[:foreign_key]
end
|
#foreign_key_method ⇒ Object
49
50
51
|
# File 'lib/subroutine/association_fields/configuration.rb', line 49
def foreign_key_method
(foreign_key || "#{field_name}_id").to_sym
end
|
#foreign_type_method ⇒ Object
53
54
55
|
# File 'lib/subroutine/association_fields/configuration.rb', line 53
def foreign_type_method
foreign_key_method.to_s.gsub(/_id$/, "_type").to_sym
end
|
#inferred_class_name ⇒ Object
41
42
43
|
# File 'lib/subroutine/association_fields/configuration.rb', line 41
def inferred_class_name
class_name || as.to_s.camelize
end
|
#polymorphic? ⇒ Boolean
29
30
31
|
# File 'lib/subroutine/association_fields/configuration.rb', line 29
def polymorphic?
!!config[:polymorphic]
end
|
22
23
24
25
26
27
|
# File 'lib/subroutine/association_fields/configuration.rb', line 22
def related_field_names
out = super
out << foreign_key_method
out << foreign_type_method if polymorphic?
out
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
65
66
67
|
# File 'lib/subroutine/association_fields/configuration.rb', line 65
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
|