diff options
author | Nick Kallen <nkallen@nick-kallens-computer-2.local> | 2008-04-13 19:55:07 -0700 |
---|---|---|
committer | Nick Kallen <nkallen@nick-kallens-computer-2.local> | 2008-04-13 19:55:07 -0700 |
commit | 722623dab397427df7a99b7aeefe4356cadcce25 (patch) | |
tree | 99cfc7c48d1a032bd36d2baa06ebd8a5c04d223d | |
parent | 7a93ce0b1e8560ef5bad7cb7f7a170507bfde16d (diff) | |
download | rails-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.rb | 3 | ||||
-rw-r--r-- | lib/active_relation/relations/update.rb | 3 | ||||
-rw-r--r-- | spec/active_relation/unit/relations/deletion_spec.rb | 12 | ||||
-rw-r--r-- | spec/active_relation/unit/relations/update_spec.rb | 12 |
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 |