Class: AdvertSelector::Placement
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- AdvertSelector::Placement
- Defined in:
- app/models/advert_selector/placement.rb
Class Method Summary collapse
Instance Method Summary collapse
- #after_save_update_conflicting_placements_info ⇒ Object
- #conflicting_placements ⇒ Object
- #conflicting_placements_array=(string) ⇒ Object
- #conflicting_with?(placement_syms) ⇒ Boolean
- #name_sym ⇒ Object
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_info ⇒ Object
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_placements ⇒ Object
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
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_sym ⇒ Object
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 |