aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Kallen <nkallen@nick-kallens-computer-2.local>2008-04-13 19:55:07 -0700
committerNick Kallen <nkallen@nick-kallens-computer-2.local>2008-04-13 19:55:07 -0700
commit722623dab397427df7a99b7aeefe4356cadcce25 (patch)
tree99cfc7c48d1a032bd36d2baa06ebd8a5c04d223d
parent7a93ce0b1e8560ef5bad7cb7f7a170507bfde16d (diff)
downloadrails-722623dab397427df7a99b7aeefe4356cadcce25.tar.gz
rails-722623dab397427df7a99b7aeefe4356cadcce25.tar.bz2
rails-722623dab397427df7a99b7aeefe4356cadcce25.zip
adding limit options to update and destroy
-rw-r--r--lib/active_relation/relations/deletion.rb3
-rw-r--r--lib/active_relation/relations/update.rb3
-rw-r--r--spec/active_relation/unit/relations/deletion_spec.rb12
-rw-r--r--spec/active_relation/unit/relations/update_spec.rb12
4 files changed, 14 insertions, 16 deletions
diff --git a/lib/active_relation/relations/deletion.rb b/lib/active_relation/relations/deletion.rb
index 1b94df8729..f1d121d68f 100644
--- a/lib/active_relation/relations/deletion.rb
+++ b/lib/active_relation/relations/deletion.rb
@@ -8,7 +8,8 @@ module ActiveRelation
[
"DELETE",
"FROM #{table_sql}",
- ("WHERE #{selects.collect(&:to_sql).join('\n\tAND ')}" unless selects.blank?)
+ ("WHERE #{selects.collect(&:to_sql).join('\n\tAND ')}" unless selects.blank? ),
+ ("LIMIT #{taken}" unless taken.blank? ),
].compact.join("\n")
end
diff --git a/lib/active_relation/relations/update.rb b/lib/active_relation/relations/update.rb
index 5a7be31290..6262ead187 100644
--- a/lib/active_relation/relations/update.rb
+++ b/lib/active_relation/relations/update.rb
@@ -12,7 +12,8 @@ module ActiveRelation
assignments.collect do |attribute, value|
"#{value.format(attribute)} = #{attribute.format(value)}"
end.join(",\n"),
- ("WHERE #{selects.collect(&:to_sql).join('\n\tAND ')}" unless selects.blank?)
+ ("WHERE #{selects.collect(&:to_sql).join('\n\tAND ')}" unless selects.blank? ),
+ ("LIMIT #{taken}" unless taken.blank? )
].join("\n")
end
diff --git a/spec/active_relation/unit/relations/deletion_spec.rb b/spec/active_relation/unit/relations/deletion_spec.rb
index 46a962cb5c..08f7bc03bb 100644
--- a/spec/active_relation/unit/relations/deletion_spec.rb
+++ b/spec/active_relation/unit/relations/deletion_spec.rb
@@ -23,13 +23,11 @@ module ActiveRelation
end
it "manufactures sql deleting a ranged relation" do
- pending do
- Deletion.new(@relation.take(1)).to_sql.should be_like("
- DELETE
- FROM `users`
- LIMIT 1
- ")
- end
+ Deletion.new(@relation.take(1)).to_sql.should be_like("
+ DELETE
+ FROM `users`
+ LIMIT 1
+ ")
end
end
diff --git a/spec/active_relation/unit/relations/update_spec.rb b/spec/active_relation/unit/relations/update_spec.rb
index 969b17436f..24beb315e5 100644
--- a/spec/active_relation/unit/relations/update_spec.rb
+++ b/spec/active_relation/unit/relations/update_spec.rb
@@ -15,13 +15,11 @@ module ActiveRelation
end
it "manufactures sql updating attributes when given a ranged relation" do
- pending do
- Update.new(@relation.take(1), @relation[:name] => "nick").to_sql.should be_like("
- UPDATE `users`
- SET `users`.`name` = 'nick'
- LIMIT 1
- ")
- end
+ Update.new(@relation.take(1), @relation[:name] => "nick").to_sql.should be_like("
+ UPDATE `users`
+ SET `users`.`name` = 'nick'
+ LIMIT 1
+ ")
end
describe 'when given values whose types correspond to the types of the attributes' do