Class: AdvertSelector::Placement

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/advert_selector/placement.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.conflicting_placements(string) ⇒ Object



21
22
23
# File 'app/models/advert_selector/placement.rb', line 21

def self.conflicting_placements(string)
  string.to_s.split(/[ ,]/).collect{|name| name.strip}.reject{|name| name.blank?}.collect{|name| name.to_sym}.sort_by{|sym| sym.to_s}.uniq
end

Instance Method Details

#after_save_update_conflicting_placements_infoObject



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'app/models/advert_selector/placement.rb', line 37

def after_save_update_conflicting_placements_info
  if conflicting_placements_array_changed?
    saved_org = Placement.conflicting_placements(conflicting_placements_array_change.first)
    saved_new = Placement.conflicting_placements(conflicting_placements_array_change.last)

    (saved_org-saved_new).each do |name|
      if placement = Placement.by_name(name).first
        placement.conflicting_placements_array = placement.conflicting_placements.reject{|var| var == name_sym}
        placement.save if placement.conflicting_placements_array_changed?
      end
    end
    saved_new.each do |name|
      if placement = Placement.where(:name => name).first
        placement.conflicting_placements_array = placement.conflicting_placements.push(name_sym)
        placement.save if placement.conflicting_placements_array_changed?
      end
    end
  end
end

#conflicting_placementsObject



25
26
27
# File 'app/models/advert_selector/placement.rb', line 25

def conflicting_placements
  @conflicting_placements ||= ([self.name_sym] + Placement.conflicting_placements(conflicting_placements_array))
end

#conflicting_placements_array=(string) ⇒ Object



29
30
31
32
33
34
# File 'app/models/advert_selector/placement.rb', line 29

def conflicting_placements_array=(string)
  string = string.join(",") if string.is_a?(Array)
  arr = Placement.conflicting_placements( string )
  arr.delete(name_sym)
  self[:conflicting_placements_array] = arr.join(",")
end

#conflicting_with?(placement_syms) ⇒ Boolean

Returns:

  • (Boolean)


14
15
16
17
18
19
# File 'app/models/advert_selector/placement.rb', line 14

def conflicting_with?(placement_syms)
  placement_syms = [placement_syms.name_sym] if placement_syms.is_a?(Placement)
  placement_syms = placement_syms.collect{|plac| plac.name_sym} if placement_syms.first.is_a?(Placement)

  !(placement_syms & conflicting_placements).empty?
end

#name_symObject



9
10
11
# File 'app/models/advert_selector/placement.rb', line 9

def name_sym
  @name_sym ||= name.to_s.downcase.to_sym unless name.blank?
end