From cafe31a078276dbf941bd8b30f0caddc878c0830 Mon Sep 17 00:00:00 2001 From: Jason Meller Date: Sat, 18 Jan 2014 00:51:34 -0500 Subject: Ensure #second acts like #first AR finder This commit bring the famous ordinal Array instance methods defined in ActiveSupport into ActiveRecord as fully-fledged finders. These finders ensure a default ascending order of the table's primary key, and utilize the OFFSET SQL verb to locate the user's desired record. If an offset is defined in the query, calling #second adds to the offset to get the actual desired record. Fixes #13743. --- activerecord/lib/active_record/relation.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'activerecord/lib/active_record/relation.rb') diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb index 745c6cf349..f152891888 100644 --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -20,10 +20,11 @@ module ActiveRecord alias :model :klass alias :loaded? :loaded - def initialize(klass, table, values = {}) + def initialize(klass, table, values = {}, offsets = {}) @klass = klass @table = table @values = values + @offsets = offsets @loaded = false end @@ -498,6 +499,7 @@ module ActiveRecord @first = @last = @to_sql = @order_clause = @scope_for_create = @arel = @loaded = nil @should_eager_load = @join_dependency = nil @records = [] + @offsets = {} self end -- cgit v1.2.3 From de3bf3ec3d7dfa81870aca5b8ed8c237e093fe9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Mon, 20 Jan 2014 20:45:08 -0200 Subject: Remove unneded argument This variable is internal and should not be exposed to end users --- activerecord/lib/active_record/relation.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'activerecord/lib/active_record/relation.rb') diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb index f152891888..0fc63343ab 100644 --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -20,11 +20,11 @@ module ActiveRecord alias :model :klass alias :loaded? :loaded - def initialize(klass, table, values = {}, offsets = {}) + def initialize(klass, table, values = {}) @klass = klass @table = table @values = values - @offsets = offsets + @offsets = {} @loaded = false end -- cgit v1.2.3 From 9322e071e48a6f2ee00de736d7630f71f4dfcb31 Mon Sep 17 00:00:00 2001 From: Carlos Antonio da Silva Date: Tue, 21 Jan 2014 09:46:01 -0200 Subject: Remove missed usage of @first variable With the introduction of `#second` method and friends, we added an offsets hash which replaced the @first variable, so removing it from the reset method to avoid creating an unused variable now. Introduced in bc625080308e4853ae3036f2ad74fe3826e463ef. --- activerecord/lib/active_record/relation.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'activerecord/lib/active_record/relation.rb') diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb index 0fc63343ab..17af887abc 100644 --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -496,7 +496,7 @@ module ActiveRecord end def reset - @first = @last = @to_sql = @order_clause = @scope_for_create = @arel = @loaded = nil + @last = @to_sql = @order_clause = @scope_for_create = @arel = @loaded = nil @should_eager_load = @join_dependency = nil @records = [] @offsets = {} -- cgit v1.2.3 From ce91efed652bbcec42dbc68e421f717fb2ecc9b8 Mon Sep 17 00:00:00 2001 From: kei Date: Wed, 22 Jan 2014 22:13:38 +0900 Subject: Remove duplicate merge --- activerecord/lib/active_record/relation.rb | 1 - 1 file changed, 1 deletion(-) (limited to 'activerecord/lib/active_record/relation.rb') diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb index 17af887abc..fb213dc6f7 100644 --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -535,7 +535,6 @@ module ActiveRecord } binds = Hash[bind_values.find_all(&:first).map { |column, v| [column.name, v] }] - binds.merge!(Hash[bind_values.find_all(&:first).map { |column, v| [column.name, v] }]) Hash[equalities.map { |where| name = where.left.name -- cgit v1.2.3