8000 GitHub - mattfreer/ignore_default_scope: A Ruby on Rails plug-in that provides a mechanism for ActiveRecord Models to ignore the default_scope of a belongs_to association.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

A Ruby on Rails plug-in that provides a mechanism for ActiveRecord Models to ignore the default_scope of a belongs_to association.

License

Notifications You must be signed in to change notification settings

mattfreer/ignore_default_scope

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IgnoreDefaultScope

A Ruby on Rails plug-in that provides a mechanism for ActiveRecord Models to ignore the default_scope of a belongs_to association.

Installation

In your Gemfile

gem 'ignore_default_scope', :git => 'git://github.com/mattfreer/ignore_default_scope.git'

Usage

You can instruct an ActiveRecord Model to ignore the default_scope of a belongs_to association like this:

class Project < ActiveRecord::Base
  belongs_to :creator, :class_name => "User"
  ignore_default_scope :creator
end

class User < ActiveRecord::Base
  has_many :projects, :foreign_key => "creator_id"
  default_scope where(:deleted_at => nil)
end

In the above mock scenario Projects are created by Users, who can be archived (soft-deleted). In general, archived Users are not relevant to our application, hence a default_scope is applied to Users, which filters out archived records. However Projects and their creators need to be readable, regardless of whether the creator is archived. The solution being to instruct Projects to ignore_default_scope of creators.

Supports polymorphic associations

Ignoring the default_scope of Polymorphic belongs_to relations works too, as demonstrated in following example:

class Comment < ActiveRecord::Base
  belongs_to :author, :polymorphic => true
  ignore_default_scope :author
end

class User < ActiveRecord::Base
  has_many :comments, :as => :author
  default_scope where(:deleted_at => nil)
end

class Customer < ActiveRecord::Base
  has_many :comments, :as => :author
  default_scope where(:deleted_at => nil)
end

In the above mock scenario Comments can be created by Users or Customers. Both Users and Customers can be archived. Comments and their authors need to be readable, regardless of whether the author is archived.

Support

This gem supports Rails 3.1.1 and above.

Copyright © 2013 Matt Freer, released under the MIT license

About

A Ruby on Rails plug-in that provides a mechanism for ActiveRecord Models to ignore the default_scope of a belongs_to association.

Resources

License

Stars

Watchers

Forks

Packages

No packages published
0