lib/pose.rb in pose-0.2.1 vs lib/pose.rb in pose-0.2.2

- old
+ new

@@ -133,29 +133,36 @@ def search query, classes, limit = nil # Turn 'classes' into an array. classes = [classes].flatten classes_names = classes.map &:name + classes_names = classes_names[0] if classes_names.size == 1 # Get the ids of the results. result_classes_and_ids = {} query.split(' ').each do |query_word| current_word_classes_and_ids = {} classes.each { |clazz| current_word_classes_and_ids[clazz.name] = [] } query = PoseAssignment.joins(:pose_word) \ .where(:pose_words => {:text.matches => "#{query_word}%"}, :posable_type => classes_names) - query = query.limit(limit) if limit query.each do |pose_assignment| current_word_classes_and_ids[pose_assignment.posable_type] << pose_assignment.posable_id end current_word_classes_and_ids.each do |class_name, ids| if result_classes_and_ids.has_key? class_name result_classes_and_ids[class_name] = result_classes_and_ids[class_name] & ids else result_classes_and_ids[class_name] = ids end + end + end + + # Truncate id lists to the given limits. + if limit + result_classes_and_ids.each do |class_name, ids| + ids.slice! 0, limit end end # Load the results by id. {}.tap do |result|