aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-07-28 15:58:36 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2010-07-28 15:58:36 -0700
commit3878a115a3d53eb817c0fbab3e5ca7ec1427f0be (patch)
tree12874b8e02dc5d93c320d86248b09b6e3567b4b7
parent6d44a1349ef23f8969eeec91b0facb0adf6df52b (diff)
downloadrails-3878a115a3d53eb817c0fbab3e5ca7ec1427f0be.tar.gz
rails-3878a115a3d53eb817c0fbab3e5ca7ec1427f0be.tar.bz2
rails-3878a115a3d53eb817c0fbab3e5ca7ec1427f0be.zip
refactor for faster method lookup
-rw-r--r--lib/arel/algebra/relations/relation.rb26
-rw-r--r--spec/algebra/unit/relations/relation_spec.rb2
2 files changed, 15 insertions, 13 deletions
diff --git a/lib/arel/algebra/relations/relation.rb b/lib/arel/algebra/relations/relation.rb
index ccc1ab558f..e8ef9b395d 100644
--- a/lib/arel/algebra/relations/relation.rb
+++ b/lib/arel/algebra/relations/relation.rb
@@ -116,7 +116,7 @@ module Arel
end
%w{
- where project order skip group having
+ where order skip group having
}.each do |operation_name|
class_eval <<-OPERATION, __FILE__, __LINE__
def #{operation_name}(*arguments)
@@ -126,6 +126,11 @@ module Arel
OPERATION
end
+ def project *args
+ return self if args.all? { |x| x.blank? }
+ Project.new self, *args
+ end
+
def take thing
Take.new self, thing
end
@@ -142,20 +147,17 @@ module Arel
Alias.new(self)
end
- module Writable
- def insert(record)
- session.create Insert.new(self, record)
- end
+ def insert(record)
+ session.create Insert.new(self, record)
+ end
- def update(assignments)
- session.update Update.new(self, assignments)
- end
+ def update(assignments)
+ session.update Update.new(self, assignments)
+ end
- def delete
- session.delete Deletion.new(self)
- end
+ def delete
+ session.delete Deletion.new(self)
end
- include Writable
JoinOperation = Struct.new(:join_class, :relation1, :relation2) do
def on(*predicates)
diff --git a/spec/algebra/unit/relations/relation_spec.rb b/spec/algebra/unit/relations/relation_spec.rb
index 8d0639ee07..2a2fb15d89 100644
--- a/spec/algebra/unit/relations/relation_spec.rb
+++ b/spec/algebra/unit/relations/relation_spec.rb
@@ -159,7 +159,7 @@ module Arel
end
end
- describe Relation::Operable::Writable do
+ describe 'relation is writable' do
describe '#delete' do
it 'manufactures a deletion relation' do
Session.start do |s|