Class: ShareVisibilityConverter

Inherits:
Object
  • Object
show all
Defined in:
lib/share_visibility_converter.rb

Constant Summary collapse

RECENT =

number of weeks to do in the migration

2

Class Method Summary collapse

Class Method Details

.copy_hidden_share_visibilities_to_users(only_recent = false) ⇒ Object


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/share_visibility_converter.rb', line 28

def self.copy_hidden_share_visibilities_to_users(only_recent = false)
  query = ShareVisibility.where(:hidden => true).includes(:contact => :user)
  query = query.where('share_visibilities.updated_at > ?', RECENT.weeks.ago) if only_recent
  count = query.count 
  puts "Updating #{count} records in batches of 1000..."

  batch_count = 1
  query.find_in_batches do |visibilities|
    puts "Updating batch ##{batch_count} of #{(count/1000)+1}..."
    batch_count += 1
    visibilities.each do |visibility|   
      begin
        type = visibility.shareable_type
        id = visibility.shareable_id.to_s
        u = visibility.contact.user
        u.hidden_shareables ||= {}
        u.hidden_shareables[type] ||= []
        u.hidden_shareables[type] << id unless u.hidden_shareables[type].include?(id)
        u.save!(:validate => false)
      rescue => e
        puts "ERROR: #{e.message} skipping pv with id: #{visibility.id}"
      end
    end
  end
end