Module: HasHelpers::ActiveRecord::NestedResource

Defined in:
lib/has_helpers/active_record/nested_resource.rb

Defined Under Namespace

Modules: PrependedMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



9
10
11
# File 'lib/has_helpers/active_record/nested_resource.rb', line 9

def self.included(klass)
  klass.prepend(PrependedMethods)
end

Instance Method Details

#to_service(use_base_class: false, owner_instance: owner, action: :edit, resources: [ *action, owner_instance, use_base_class ? self.becomes(self.class.base_class) : self ], **options) ⇒ Object

Generate a service with a nested URL, where the base is generated using the current object's owner.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/has_helpers/active_record/nested_resource.rb', line 15

def to_service(
  use_base_class: false, # Use the base class instance of the current object. Only applies to STI models.
  owner_instance: owner,
  action: :edit,
  resources: [
    *action,
    owner_instance,
    use_base_class ? self.becomes(self.class.base_class) : self
  ],
  **options
)
  route_name_parts = []
  route_resources = []

  resources.each do |resource|
    case resource
    when String, Symbol
      route_name_parts << resource
    else
      route_name_parts << resource.class.name.demodulize.underscore
      route_resources << resource
    end
  end

  route_name = "#{ route_name_parts.join("_") }_path"
  super(
    url: ::HasHelpers::BasePresenter::Routing.routes.send(route_name, *route_resources),
    **options
  )
end