lib/faceted/collector.rb in faceted-0.8.3 vs lib/faceted/collector.rb in faceted-1.0.0

- old
+ new

@@ -17,21 +17,23 @@ module ClassMethods def collects(name, args={}) @fields = [name] - @collects = eval "#{scope}#{args[:class_name] || name.to_s.classify}" + find_by = args[:find_by] ? args[:find_by] : "#{name.to_s.downcase.singularize}_id" + @collects ||= {} + @collects[name.downcase] = eval "#{scope}#{args[:class_name] || name.to_s.classify}" define_method :"#{name.downcase}" do - objects + objects(name.downcase.to_sym) end - define_method :finder do - {"#{args[:find_by]}" => self.send(args[:find_by])} + define_method :"#{name.downcase}_finder" do + {"#{find_by}" => self.send(find_by)} end - self.send(:attr_accessor, args[:find_by]) + self.send(:attr_accessor, find_by) end - def collected_class + def collected_classes @collects end end @@ -49,12 +51,13 @@ self.class.fields.inject({}){ |h,f| h[f] = self.send(f).map{|o| o.to_hash}; h } end private - def objects - return unless self.class.collected_class - @objects ||= self.class.collected_class.where(self.finder) + def objects(klass) + return [] unless self.class.collected_classes + return [] unless self.class.collected_classes.keys.include?(klass) + self.class.collected_classes[klass].where(self.send("#{klass.to_s}_finder")) end end end \ No newline at end of file