Permalink
Browse files

Allow calling class methods on a Relation

  • Loading branch information...
1 parent c52820a commit ee8c006dac7d76f79fb43df97a4ab8a2ae87b8b2 @lifo lifo committed Jan 22, 2010
Showing with 11 additions and 0 deletions.
  1. +2 −0 activerecord/lib/active_record/relation.rb
  2. +9 −0 activerecord/test/cases/named_scope_test.rb
@@ -301,6 +301,8 @@ def eager_loading?
def method_missing(method, *args, &block)
if Array.method_defined?(method)
to_a.send(method, *args, &block)
+ elsif @klass.respond_to?(method)
+ @klass.send(:with_scope, self) { @klass.send(method, *args, &block) }
elsif arel.respond_to?(method)
arel.send(method, *args, &block)
elsif match = DynamicFinderMatch.match(method)
@@ -380,6 +380,15 @@ def test_deprecated_named_scope_method
assert_deprecated('named_scope has been deprecated') { Topic.named_scope :deprecated_named_scope }
end
+ def test_named_scopes_on_relations
+ # Topic.replied
+ approved_topics = Topic.scoped.approved.order('id DESC')
+ assert_equal topics(:fourth), approved_topics.first
+
+ replied_approved_topics = approved_topics.replied
+ assert_equal topics(:third), replied_approved_topics.first
+ end
+
def test_index_on_named_scope
approved = Topic.approved.order('id ASC')
assert_equal topics(:second), approved[0]

0 comments on commit ee8c006

Please sign in to comment.