aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/associations/association_collection.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record/associations/association_collection.rb')
-rw-r--r--activerecord/lib/active_record/associations/association_collection.rb27
1 files changed, 10 insertions, 17 deletions
diff --git a/activerecord/lib/active_record/associations/association_collection.rb b/activerecord/lib/active_record/associations/association_collection.rb
index bd27365b08..f33a9ce732 100644
--- a/activerecord/lib/active_record/associations/association_collection.rb
+++ b/activerecord/lib/active_record/associations/association_collection.rb
@@ -333,23 +333,16 @@ module ActiveRecord
protected
- def finder_options
- {
- :conditions => construct_conditions,
- :select => construct_select,
- :readonly => @reflection.options[:readonly],
- :order => @reflection.options[:order],
- :limit => @reflection.options[:limit],
- :include => @reflection.options[:include],
- :joins => @reflection.options[:joins],
- :group => @reflection.options[:group],
- :having => @reflection.options[:having],
- :offset => @reflection.options[:offset]
- }
- end
-
- def construct_select
- @reflection.options[:select] ||
+ def association_scope
+ options = @reflection.options.slice(:order, :limit, :joins, :group, :having, :offset)
+ super.apply_finder_options(options)
+ end
+
+ def select_value
+ super || uniq_select_value
+ end
+
+ def uniq_select_value
@reflection.options[:uniq] && "DISTINCT #{@reflection.quoted_table_name}.*"
end