Module: ActsAsConcatenation::ClassMethods

Defined in:
lib/acts_as_concatenation.rb

Instance Method Summary collapse

Instance Method Details

#acts_as_concatenation(*args) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/acts_as_concatenation.rb', line 3

def acts_as_concatenation(*args)
  options = args.extract_options!
  separator = options.delete(:separator) || '|'
  args.each do |attr|
    class_eval do
      define_method "#{attr}=".to_sym do |a|
        if (!a.nil?) && (!a.empty?) && (a.respond_to? :join)
          a.delete_if {|x| x.nil? || x.strip.empty? } #for a fake checkbox in html page to crack empty selection

          self[attr] = a.join(separator)
        else
          self[attr] = a
        end
      end

      define_method attr do
        value = self[attr]
        value.nil? ? [] : value.split(separator)
      end
    end
  end
end