Module: Infold::ModelAssociationDecorator

Defined in:
app/decorators/infold/model_association_decorator.rb

Instance Method Summary collapse

Instance Method Details

#code_label_delegateObject



35
36
37
# File 'app/decorators/infold/model_association_decorator.rb', line 35

def code_label_delegate
  "delegate :#{parent_model.label_column_name}, to: :#{belongs_name}, prefix: true, allow_nil: true"
end

#code_on_model(kind) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'app/decorators/infold/model_association_decorator.rb', line 8

def code_on_model(kind)
  foreign_key = primary_key = class_name = ''
  unless foreign_key_column.name == "#{parent_model.name.underscore}_id"
    foreign_key = ", foreign_key: '#{foreign_key_column.name}'"
  end
  unless primary_key_column&.name.to_s == 'id'
    primary_key = ", primary_key: '#{primary_key_column.name}'"
  end
  dependent = ", dependent: :#{dependent_kind.presence || 'destroy'}"
  if kind == :parent
    unless belongs_name == parent_model.name.underscore
      class_name = ", class_name: #{parent_model.name}.name"
    end
    "  belongs_to :#{belongs_name}#{class_name}#{foreign_key}#{primary_key}, optional: true\n"
  elsif has_kind_one?
    unless has_name == model.name.underscore
      class_name = ", class_name: #{model.name}.name"
    end
    "  has_one :#{has_name}#{class_name}#{foreign_key}#{primary_key}#{dependent}\n"
  else
    unless has_name == model.name_pluralize
      class_name = ", class_name: #{model.name}.name"
    end
    "  has_many :#{has_name}#{class_name}#{foreign_key}#{primary_key}#{dependent}\n"
  end
end

#migration_add_foreign_keyObject



4
5
6
# File 'app/decorators/infold/model_association_decorator.rb', line 4

def migration_add_foreign_key
  "add_foreign_key :#{model.name_pluralize}, :#{parent_model.name_pluralize}, column: :#{foreign_key_column.name}"
end