Skip to content

Commit

Permalink
Remove deprecated scope use without passing a callable object.
Browse files Browse the repository at this point in the history
Removed tests from deprecated code.
  • Loading branch information
arunagw committed Jul 3, 2013
1 parent 9105c59 commit 50cbc03
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 23 deletions.
4 changes: 4 additions & 0 deletions activerecord/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
* Remove deprecated `scope` use without passing a callable object.

*Arun Agrawal*

* Remove deprecated `transaction_joinable=` in favor of `begin_transaction`
with `:joinable` option.

Expand Down
13 changes: 0 additions & 13 deletions activerecord/lib/active_record/scoping/named.rb
Original file line number Diff line number Diff line change
Expand Up @@ -141,19 +141,6 @@ def scope_attributes? # :nodoc:
def scope(name, body, &block)
extension = Module.new(&block) if block

# Check body.is_a?(Relation) to prevent the relation actually being
# loaded by respond_to?
if body.is_a?(Relation) || !body.respond_to?(:call)
ActiveSupport::Deprecation.warn(
"Using #scope without passing a callable object is deprecated. For " \
"example `scope :red, where(color: 'red')` should be changed to " \
"`scope :red, -> { where(color: 'red') }`. There are numerous gotchas " \
"in the former usage and it makes the implementation more complicated " \
"and buggy. (If you prefer, you can just define a class method named " \
"`self.red`.)"
)
end

singleton_class.send(:define_method, name) do |*args|
if body.respond_to?(:call)
scope = all.scoping { body.call(*args) }
Expand Down
10 changes: 0 additions & 10 deletions activerecord/test/cases/scoping/named_scoping_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -435,16 +435,6 @@ def test_scoped_are_lazy_loaded_if_table_still_does_not_exist
end
end

def test_eager_scopes_are_deprecated
klass = Class.new(ActiveRecord::Base)
klass.table_name = 'posts'

assert_deprecated do
klass.scope :welcome_2, klass.where(:id => posts(:welcome).id)
end
assert_equal [posts(:welcome).title], klass.welcome_2.map(&:title)
end

def test_eager_default_scope_relations_are_remove
klass = Class.new(ActiveRecord::Base)
klass.table_name = 'posts'
Expand Down

0 comments on commit 50cbc03

Please sign in to comment.