aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation.rb
diff options
context:
space:
mode:
authorPratik Naik <pratiknaik@gmail.com>2009-12-29 00:07:46 +0530
committerPratik Naik <pratiknaik@gmail.com>2009-12-29 00:07:46 +0530
commit91e28aae8649c503e81d66ad6829403ccc2c6571 (patch)
treeed51b3519723cc1966e1faa31d0a2478f8b2c0e0 /activerecord/lib/active_record/relation.rb
parente8ca22d129c1e93574e770dd69dc964be6686469 (diff)
downloadrails-91e28aae8649c503e81d66ad6829403ccc2c6571.tar.gz
rails-91e28aae8649c503e81d66ad6829403ccc2c6571.tar.bz2
rails-91e28aae8649c503e81d66ad6829403ccc2c6571.zip
Add Model.having and Relation#having
Diffstat (limited to 'activerecord/lib/active_record/relation.rb')
-rw-r--r--activerecord/lib/active_record/relation.rb12
1 files changed, 12 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb
index 291e97ff83..c7a74b7763 100644
--- a/activerecord/lib/active_record/relation.rb
+++ b/activerecord/lib/active_record/relation.rb
@@ -55,6 +55,18 @@ module ActiveRecord
from.present? ? create_new_relation(@relation.from(from)) : create_new_relation
end
+ def having(*args)
+ return create_new_relation if args.blank?
+
+ if [String, Hash, Array].include?(args.first.class)
+ havings = @klass.send(:merge_conditions, args.size > 1 ? Array.wrap(args) : args.first)
+ else
+ havings = args.first
+ end
+
+ create_new_relation(@relation.having(havings))
+ end
+
def group(groups)
groups.present? ? create_new_relation(@relation.group(groups)) : create_new_relation
end