Sha256: 804dbfd50688e59a3f34e4f88a69e4b58d606b9debbf2ed614aaefde44ee9f1a

Contents?: true

Size: 855 Bytes

Versions: 3

Compression:

Stored size: 855 Bytes

Contents

# extended Relation: extracts relation from rows

class Relation < ActiveRecord::Base
  def self.dangling
    names = Relation.pluck(:name).uniq
    models = []
    names.each { |name| models |= name.split(' ') }
    hsh = {}
    models.each do |class_name|
      klass = class_name.constantize
      ids = klass.pluck(:id)
      idx = Relation.where('name like ?', "#{class_name} %").pluck(:from_id)
      idy = Relation.where('name like ?', "% #{class_name}").pluck(:to_id)
      arr = (idx | idy) - ids
      hsh[class_name] = arr if arr.length.positive?
    end
    hsh
  end

  def self.remove_dangling(hsh)
    hsh.each do |name, arr|
      arr.each do |idx|
        Relation.where(from_id: idx).where('name like ?', "#{name} %").delete_all
        Relation.where(to_id: idx).where('name like ?', "% #{name}").delete_all
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
relation-0.3.8 app/models/dangling.rb
relation-0.3.7 app/models/dangling.rb
relation-0.3.5 app/models/dangling.rb