This project is archived and is in readonly mode.

#3838 ✓ resolved
foca

with_exclusive_scope does not override the default_scope when each provides IS NULL / IS NOT NULL conditions

Reported by foca | February 1st, 2010 @ 10:36 PM | in 3.0.2

class Page < ActiveRecord::Base
  default_scope where(:deleted_at => nil)

  def self.deleted
    with_exclusive_scope :find => where('pages.deleted_at IS NOT NULL') do
      self
    end
  end
end

Page.all emits this SQL:

SELECT "pages".* FROM "pages" WHERE ("pages"."deleted_at" IS NULL)

While Page.deleted.all emits this:

SELECT "pages".* FROM "pages" WHERE ("pages"."deleted_at" IS NULL) AND ("pages"."deleted_at" IS NOT NULL)

Attached is a failing test.

Comments and changes to this ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile »

Tickets have moved to Github

The new ticket tracker is available at https://github.com/rails/rails/issues

Shared Ticket Bins

Attachments