aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPratik Naik <pratiknaik@gmail.com>2009-12-28 03:19:31 +0530
committerPratik Naik <pratiknaik@gmail.com>2009-12-28 03:19:31 +0530
commite9e20ab6013424c098c88d357d210068a32a1b39 (patch)
tree5200e481ecdf16d92e59207b1f65c625f638a28d
parent630dc5073075ba73251400400caae802f8d97d41 (diff)
downloadrails-e9e20ab6013424c098c88d357d210068a32a1b39.tar.gz
rails-e9e20ab6013424c098c88d357d210068a32a1b39.tar.bz2
rails-e9e20ab6013424c098c88d357d210068a32a1b39.zip
Use arel#from instead of the current hack
-rw-r--r--activerecord/lib/active_record/relation.rb15
1 files changed, 5 insertions, 10 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb
index d0f6c5a63f..a789337027 100644
--- a/activerecord/lib/active_record/relation.rb
+++ b/activerecord/lib/active_record/relation.rb
@@ -21,7 +21,8 @@ module ActiveRecord
offset(r.skipped).
select(r.send(:select_clauses).join(', ')).
eager_load(r.eager_load_associations).
- preload(r.associations_to_preload)
+ preload(r.associations_to_preload).
+ from(r.send(:sources).any? ? r.send(:from_clauses) : nil)
end
alias :& :merge
@@ -42,12 +43,8 @@ module ActiveRecord
selects.present? ? create_new_relation(@relation.project(selects)) : create_new_relation
end
- # TODO : This is temporary. We need .from in Arel.
- attr_writer :from
def from(from)
- relation = create_new_relation
- relation.from = from
- relation
+ from.present? ? create_new_relation(@relation.from(from)) : create_new_relation
end
def group(groups)
@@ -130,7 +127,7 @@ module ActiveRecord
:conditions => where_clause,
:limit => @relation.taken,
:offset => @relation.skipped,
- :from => @from
+ :from => (@relation.send(:from_clauses) if @relation.send(:sources).any?)
},
ActiveRecord::Associations::ClassMethods::JoinDependency.new(@klass, @eager_load_associations, nil))
end
@@ -303,9 +300,7 @@ module ActiveRecord
end
def create_new_relation(relation = @relation, readonly = @readonly, preload = @associations_to_preload, eager_load = @eager_load_associations)
- r = self.class.new(@klass, relation, readonly, preload, eager_load)
- r.from = @from
- r
+ self.class.new(@klass, relation, readonly, preload, eager_load)
end
def where_clause(join_string = "\n\tAND ")