Class: HasHelpers::Resources::Meta
- Inherits:
-
Object
- Object
- HasHelpers::Resources::Meta
- Includes:
- Attributes
- Defined in:
- lib/has_helpers/resources.rb
Instance Attribute Summary collapse
- #alias_name(name = nil) ⇒ Object
- #klass(safe: false) ⇒ Object
-
#resource_name ⇒ Object
Returns the value of attribute resource_name.
- #resource_type(rt = nil) ⇒ Object
Instance Method Summary collapse
- #add(*resources) ⇒ Object
- #added_nested_resources ⇒ Object
- #associations ⇒ Object
- #excluded_nested_resources ⇒ Object
- #fields_resources ⇒ Object
-
#initialize(resource_name, **options) ⇒ Meta
constructor
A new instance of Meta.
- #nested_resources ⇒ Object
- #remove(*resources) ⇒ Object
- #split_resources(*resources) ⇒ Object
Methods included from Attributes
Constructor Details
#initialize(resource_name, **options) ⇒ Meta
Returns a new instance of Meta.
45 46 47 48 |
# File 'lib/has_helpers/resources.rb', line 45 def initialize(resource_name, **) @resource_name = resource_name super() end |
Instance Attribute Details
#alias_name(name = nil) ⇒ Object
50 51 52 |
# File 'lib/has_helpers/resources.rb', line 50 def alias_name(name = nil) @alias_name ||= name end |
#klass(safe: false) ⇒ Object
70 71 72 |
# File 'lib/has_helpers/resources.rb', line 70 def klass(safe: false) @klass ||= safe ? resource_name.safe_constantize : resource_name.constantize end |
#resource_name ⇒ Object
Returns the value of attribute resource_name.
42 43 44 |
# File 'lib/has_helpers/resources.rb', line 42 def resource_name @resource_name end |
#resource_type(rt = nil) ⇒ Object
106 107 108 109 |
# File 'lib/has_helpers/resources.rb', line 106 def resource_type(rt = nil) self.resource_type = rt if rt @resource_type ||= (klass.base_class != klass && ::HasHelpers::Resources.lookup(klass.base_class.name).resource_type == ::HasHelpers::ResourceType::BASE) ? ::HasHelpers::ResourceType::TYPE : ::HasHelpers::ResourceType::NESTED end |
Instance Method Details
#add(*resources) ⇒ Object
54 55 56 |
# File 'lib/has_helpers/resources.rb', line 54 def add(*resources) @added_nested_resources = normalize_resource_names(resources) end |
#added_nested_resources ⇒ Object
62 63 64 |
# File 'lib/has_helpers/resources.rb', line 62 def added_nested_resources @added_nested_resources ||= [] end |
#associations ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/has_helpers/resources.rb', line 83 def associations @associations ||= begin associations = {} klass.reflect_on_all_associations.map do |assoc| # HasManyReflection, HasOneReflection, and BelongsToReflection if (assoc.is_a?(ActiveRecord::Reflection::HasManyReflection) || assoc.is_a?(ActiveRecord::Reflection::HasOneReflection) || assoc.is_a?(ActiveRecord::Reflection::BelongsToReflection)) && klass.reflect_on_association(assoc.name).klass.respond_to?(:table_exists?) && klass.reflect_on_association(assoc.name).klass.table_exists? associations["#{assoc.name}_id"] = { class_name: klass.reflect_on_association(assoc.name).klass.name, assoc_type: assoc.class.to_s.split("::").last } end rescue NameError if assoc.class_name.present? if (assoc.is_a?(ActiveRecord::Reflection::HasManyReflection) || assoc.is_a?(ActiveRecord::Reflection::HasOneReflection) || assoc.is_a?(ActiveRecord::Reflection::BelongsToReflection)) && assoc.class_name.safe_constantize.respond_to?(:table_exists?) && assoc.class_name.safe_constantize.table_exists? associations["#{assoc.name}_id"] = { class_name: assoc.class_name.delete_prefix("::"), assoc_type: assoc.class.to_s.split("::").last } end end rescue => e p e end if klass.respond_to?(:reflect_on_all_associations) associations end end |
#excluded_nested_resources ⇒ Object
66 67 68 |
# File 'lib/has_helpers/resources.rb', line 66 def excluded_nested_resources @excluded_nested_resources ||= [] end |
#fields_resources ⇒ Object
78 79 80 |
# File 'lib/has_helpers/resources.rb', line 78 def fields_resources klass.table_exists? ? klass.column_names : [] end |
#nested_resources ⇒ Object
111 112 113 114 115 116 117 118 119 |
# File 'lib/has_helpers/resources.rb', line 111 def nested_resources return [] if klass(safe: true).blank? nested_resources = klass.. lazy. map { |nested_attribute, _| klass.reflect_on_association(nested_attribute).klass.name }. reject { |nested_attribute| excluded_nested_resources.include?(nested_attribute) }. reject { |nested_attribute| ::HasHelpers::Resources.lookup(nested_attribute).resource_type == ::HasHelpers::ResourceType::SUB }.to_a.compact if klass.respond_to?(:nested_attributes_options) added_nested_resources.concat(nested_resources).uniq end |
#remove(*resources) ⇒ Object
58 59 60 |
# File 'lib/has_helpers/resources.rb', line 58 def remove(*resources) @excluded_nested_resources = normalize_resource_names(resources) end |
#split_resources(*resources) ⇒ Object
74 75 76 |
# File 'lib/has_helpers/resources.rb', line 74 def split_resources(*resources) @split_resources ||= normalize_resource_names(resources) end |