Module: Labelized::LabelConcern::ClassMethods

Defined in:
lib/labelized/label_concern.rb

Instance Method Summary collapse

Instance Method Details

#find_or_build_by_list(labels, labeled, label_set_name = nil) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/labelized/label_concern.rb', line 16

def find_or_build_by_list(labels, labeled, label_set_name = nil)
  label_set_class = (labelized_options[:label_set_class_name] || 'LabelSet').constantize
  existing_labels = self.label_scope(labeled).where(:name => labels)

  unless label_set_name.blank?
    label_set_name.strip! # ooh lah lah
    label_set = label_set_class.label_scope(labeled).find_or_initialize_by_name(label_set_name)
  end

  new_label_names = labels.reject do |name| 
    existing_labels.any? do |label|
      name.downcase == label.name.downcase
    end
  end

  new_labels = new_label_names.map do |name| 
    name.strip!
    self.label_scope(labeled).build(:name => name, :label_set => label_set)
  end

  existing_labels + new_labels
end

#labelized(params) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/labelized/label_concern.rb', line 13

def labelized(params)
  setup_labelized params
  
  def find_or_build_by_list(labels, labeled, label_set_name = nil)
    label_set_class = (labelized_options[:label_set_class_name] || 'LabelSet').constantize
    existing_labels = self.label_scope(labeled).where(:name => labels)

    unless label_set_name.blank?
      label_set_name.strip! # ooh lah lah
      label_set = label_set_class.label_scope(labeled).find_or_initialize_by_name(label_set_name)
    end

    new_label_names = labels.reject do |name| 
      existing_labels.any? do |label|
        name.downcase == label.name.downcase
      end
    end

    new_labels = new_label_names.map do |name| 
      name.strip!
      self.label_scope(labeled).build(:name => name, :label_set => label_set)
    end

    existing_labels + new_labels
  end          
  
end