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



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

def duplicates
  @duplicates
end

#failureObject

Returns the value of attribute failure

Returns:

  • (Object)

    the current value of failure



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

def failure
  @failure
end

#masterObject

Returns the value of attribute master

Returns:

  • (Object)

    the current value of master



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

def master
  @master
end

#model_nameObject

Returns the value of attribute model_name

Returns:

  • (Object)

    the current value of model_name



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

def model_name
  @model_name
end

#successObject

Returns the value of attribute success

Returns:

  • (Object)

    the current value of success



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

def success
  @success
end

Instance Method Details

#squashObject



17
18
19
20
21
22
23
24
25
26
# File 'lib/calagator/duplicate_checking/duplicate_squasher.rb', line 17

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

#valid?Boolean

Returns:

  • (Boolean)


9
10
11
12
13
14
15
# File 'lib/calagator/duplicate_checking/duplicate_squasher.rb', line 9

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