Returning nil from named scope lambda is equivalent to an empty hash [#1773 state:resolved]
Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
This commit is contained in:
parent
aa57e66fec
commit
91b98cf0a5
|
@ -117,6 +117,7 @@ module ActiveRecord
|
|||
delegate :scopes, :with_scope, :to => :proxy_scope
|
||||
|
||||
def initialize(proxy_scope, options, &block)
|
||||
options ||= {}
|
||||
[options[:extend]].flatten.each { |extension| extend extension } if options[:extend]
|
||||
extend Module.new(&block) if block_given?
|
||||
unless Scope === proxy_scope
|
||||
|
|
|
@ -99,6 +99,12 @@ class NamedScopeTest < ActiveRecord::TestCase
|
|||
assert_equal topics_written_before_the_second, Topic.written_before(topics(:second).written_on)
|
||||
end
|
||||
|
||||
def test_procedural_scopes_returning_nil
|
||||
all_topics = Topic.find(:all)
|
||||
|
||||
assert_equal all_topics, Topic.written_before(nil)
|
||||
end
|
||||
|
||||
def test_scopes_with_joins
|
||||
address = author_addresses(:david_address)
|
||||
posts_with_authors_at_address = Post.find(
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
class Topic < ActiveRecord::Base
|
||||
named_scope :base
|
||||
named_scope :written_before, lambda { |time|
|
||||
{ :conditions => ['written_on < ?', time] }
|
||||
if time
|
||||
{ :conditions => ['written_on < ?', time] }
|
||||
end
|
||||
}
|
||||
named_scope :approved, :conditions => {:approved => true}
|
||||
named_scope :rejected, :conditions => {:approved => false}
|
||||
|
|
Loading…
Reference in New Issue