lib/thinking_sphinx/collection.rb in lostboy-thinking-sphinx-1.1.5.2 vs lib/thinking_sphinx/collection.rb in lostboy-thinking-sphinx-1.1.5.3

- old
+ new

@@ -49,10 +49,12 @@ :conditions => {klass.primary_key.to_sym => ids}, :include => (options[:include] || index_options[:include]), :select => (options[:select] || index_options[:select]), :order => (options[:sql_order] || index_options[:sql_order]) ) : [] + + include_attributes(instances, matches, options) if options[:with_attributes] # Raise an exception if we find records in Sphinx but not in the DB, so # the search method can retry without them. See # ThinkingSphinx::Search.retry_search_on_stale_index. if options[:raise_on_stale] && instances.length < ids.length @@ -87,9 +89,22 @@ obj.id == match[:attributes]["sphinx_internal_id"] } end end + def self.include_attributes(instances, results, options) + results.each do |result| + atts = result[:attributes] + options[:with_attributes].each do |att| + meth = att.to_s+'=' + model = instances.find atts["id"].to_i + if atts.include?(att.to_s) && model.respond_to?(meth) + model.send(meth, atts[att.to_s]) + end + end + end + end + def self.class_from_crc(crc) @@models_by_crc ||= ThinkingSphinx.indexed_models.inject({}) do |hash, model| hash[model.constantize.to_crc32] = model model.constantize.subclasses.each { |subclass| hash[subclass.to_crc32] = subclass.name