diff --git a/labelized.gemspec b/labelized.gemspec index 0fb09ba..4aff3d5 100644 --- a/labelized.gemspec +++ b/labelized.gemspec @@ -5,7 +5,7 @@ require 'labelized/version' Gem::Specification.new do |spec| spec.name = 'labelized' - spec.version = Labelized::VERSION + spec.version = Labelized::VERSION.dup spec.authors = ['Peter T. Brown'] spec.email = 'peter@pathable.com' spec.description = 'A better tag library' diff --git a/lib/labelized/label_concern.rb b/lib/labelized/label_concern.rb index 3f81665..04c3f1c 100644 --- a/lib/labelized/label_concern.rb +++ b/lib/labelized/label_concern.rb @@ -20,11 +20,21 @@ def find_or_build_by_list(labels, labeled, label_set_name = nil) 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) + scope = label_set_class.label_scope labeled + label_set = scope.where(:name => label_set_name).first || + scope.new{ |label| label.name = label_set_name } end LabelList.from(labels).map do |label| - self.label_scope(labeled).find_or_initialize_by_name_and_label_set_id(label.strip, label_set.id) + scope = self.label_scope labeled + name = label.strip + label_set_id = label_set.id + + scope.where(:name => name, :label_set_id => label_set_id).first || + scope.new do |label| + label.name = name + label.label_set_id = label_set_id + end end end end diff --git a/lib/labelized/labelized_concern.rb b/lib/labelized/labelized_concern.rb index 4a71753..eb15c99 100644 --- a/lib/labelized/labelized_concern.rb +++ b/lib/labelized/labelized_concern.rb @@ -48,7 +48,9 @@ def labelized(*params) define_method('label_for') do |label_set_name| label_set_class = (labelized_options[:label_set_class_name] || 'LabelSet').constantize - label_set = label_set_class.label_scope(self).find_or_initialize_by_name(label_set_name) + scope = label_set_class.label_scope self + label_set = scope.where(:name => label_set_name).first || + scope.new{ |label_set| label_set.name = label_set_name } cache_label_get(label_set_name) || self.labels.where(:label_set_id => label_set.id) end alias_method :labels_for, :label_for