Module: Tramway::Core::Inputs::PolymorphicAssociationsHelper

Included in:
Tramway::Core::InputsHelper
Defined in:
app/helpers/tramway/core/inputs/polymorphic_associations_helper.rb

Instance Method Summary collapse

Instance Method Details

#build_collection_for_polymorphic_association(form_object, property) ⇒ Object



4
5
6
7
8
9
10
11
12
# File 'app/helpers/tramway/core/inputs/polymorphic_associations_helper.rb', line 4

def build_collection_for_polymorphic_association(form_object, property)
  user = defined?(current_user) ? current_user : current_admin
  object_names = full_class_names(form_object, property).map do |class_name|
    class_name.active.send("#{user.role}_scope", user.id).map do |obj|
      decorator_class(class_name).decorate obj
    end
  end.flatten
  object_names.sort_by { |obj| obj.name.to_s }
end

#build_value_for_polymorphic_association(form_object, property, value) ⇒ Object



14
15
16
17
18
19
20
# File 'app/helpers/tramway/core/inputs/polymorphic_associations_helper.rb', line 14

def build_value_for_polymorphic_association(form_object, property, value)
  if form_object.send(property).present?
    "#{form_object.send(property).class.to_s.underscore}_#{form_object.send(property).id}"
  else
    "#{value[:type]&.underscore}_#{value[:id]}"
  end
end

#full_class_names(form_object, property) ⇒ Object



22
23
24
# File 'app/helpers/tramway/core/inputs/polymorphic_associations_helper.rb', line 22

def full_class_names(form_object, property)
  form_object.model.class.send("#{property}_type").values.map(&:constantize)
end