aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorPratik Naik <pratiknaik@gmail.com>2009-12-29 12:27:40 +0530
committerPratik Naik <pratiknaik@gmail.com>2009-12-29 12:27:40 +0530
commitbc933d0fa1b3a89deaf3e7c74d7717eb8fc7152a (patch)
tree34b05f17a1f79715c1b59f1fbda20f568745d303 /activerecord/lib/active_record
parentf290e685f0497427b348a2fae760300429d5f0cd (diff)
downloadrails-bc933d0fa1b3a89deaf3e7c74d7717eb8fc7152a.tar.gz
rails-bc933d0fa1b3a89deaf3e7c74d7717eb8fc7152a.tar.bz2
rails-bc933d0fa1b3a89deaf3e7c74d7717eb8fc7152a.zip
Make sure Relation responds to dynamic finder methods
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r--activerecord/lib/active_record/relation.rb10
1 files changed, 9 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb
index 52a8bea567..d7cd78593f 100644
--- a/activerecord/lib/active_record/relation.rb
+++ b/activerecord/lib/active_record/relation.rb
@@ -143,7 +143,15 @@ module ActiveRecord
end
def respond_to?(method)
- @relation.respond_to?(method) || Array.method_defined?(method) || super
+ return true if @relation.respond_to?(method) || Array.method_defined?(method)
+
+ if match = DynamicFinderMatch.match(method)
+ return true if @klass.send(:all_attributes_exists?, match.attribute_names)
+ elsif match = DynamicScopeMatch.match(method)
+ return true if @klass.send(:all_attributes_exists?, match.attribute_names)
+ else
+ super
+ end
end
def to_a