Class: Calagator::DuplicateChecking::DuplicateSquasher

Inherits:
Struct
  • Object
show all
Defined in:
lib/calagator/duplicate_checking/duplicate_squasher.rb

Defined Under Namespace

Classes: SingleSquasher

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#duplicatesObject

Returns the value of attribute duplicates

Returns:

  • (Object)

    the current value of duplicates



5
6
7
# File 'lib/calagator/duplicate_checking/duplicate_squasher.rb', line 5

def duplicates
  @duplicates
end

#failureObject

Returns the value of attribute failure

Returns:

  • (Object)

    the current value of failure



5
6
7
# File 'lib/calagator/duplicate_checking/duplicate_squasher.rb', line 5

def failure
  @failure
end

#model_nameObject

Returns the value of attribute model_name

Returns:

  • (Object)

    the current value of model_name



5
6
7
# File 'lib/calagator/duplicate_checking/duplicate_squasher.rb', line 5

def model_name
  @model_name
end

#primaryObject

Returns the value of attribute primary

Returns:

  • (Object)

    the current value of primary



5
6
7
# File 'lib/calagator/duplicate_checking/duplicate_squasher.rb', line 5

def primary
  @primary
end

#successObject

Returns the value of attribute success

Returns:

  • (Object)

    the current value of success



5
6
7
# File 'lib/calagator/duplicate_checking/duplicate_squasher.rb', line 5

def success
  @success
end

Instance Method Details

#squashObject



22
23
24
25
26
27
28
29
30
31
# File 'lib/calagator/duplicate_checking/duplicate_squasher.rb', line 22

def squash
  if valid?
    duplicates.each do |duplicate|
      SingleSquasher.new(primary, duplicate, model_name).squash
    end
    name = model_name.split('::').last
    self.success = "Squashed duplicate #{name.pluralize} #{duplicates.map(&:title).sort} into primary #{primary.id}."
  end
  self
end

#valid?Boolean

Returns:

  • (Boolean)


10
11
12
13
14
15
16
17
18
19
20
# File 'lib/calagator/duplicate_checking/duplicate_squasher.rb', line 10

def valid?
  name = model_name.split('::').last
  self.failure = "A primary #{name} must be selected." if primary.blank?
  if duplicates.empty?
    self.failure = "At least one duplicate #{name} must be selected."
  end
  if duplicates.include?(primary)
    self.failure = "The primary #{name} could not be squashed into itself."
  end
  failure.blank?
end