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.
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? }
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
|