Skip to content
This repository has been archived by the owner on Dec 12, 2021. It is now read-only.

ryanb/scope-builder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scope Builder

Build up named scopes conditionally.

Install

First specify it in your Rails config.

config.gem ‘ryanb-scope-builder’, :lib => ‘scope_builder’, :source => ‘gems.github.com

And then install it.

rake gems:install

Rails 2.1 or later required.

Usage

This gem adds the scope_builder method to all Active Record models. A builder behaves exactly like any other named scope except that calling other named scopes on it will alter the builder itself rather than returning a new named scope.

builder = Product.scope_builder
builder.released.visible # call a couple named scopes to change builder
builder.cheap if only_show_cheap_products? # build scopes conditionally

The scope_builder method can also take a block which will return the builder. This is useful when you are using the builder in a model search method.

# in product model
def self.search(options)
  scope_builder do |builder|
    builder.released.visible
    builder.cheap if options[:cheap]
  end
end

The scope_builder method can also be called on an existing scope.

products = Product.released.visible
builder = products.scope_builder
builder.cheap if only_show_cheap_products?

Development

This project can be found on github at the following URL.

github.com/ryanb/scope-builder/

If you would like to contribute to this project, please fork the repository and send me a pull request.

About

Build up named scopes conditionally.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages