Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
ActiveRecord 3, improved.

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.



This is a complete rewrite of the library formerly called MetaWhere. It's Rails 3.1-only for now.

It's not really suitable for actual use yet, but you're welcome to test it and send me feedback.

What's new?

A lot.

  • Symbol and hash methods aren't loaded by default. To enable them, do this in your Squeel.configure block: config.load_core_extensions :hash, :symbol

  • Speaking of, you can call Squeel.configure do |config| … end and do another bit of configuration, setting up your own aliases. config.alias_predicate :new_name, :old_name

  • The preferred way to use the various enhancements is now by passing a block to the relation method you're calling. For example:{max(id).as(max_id)} # Call SQL functions
    Person.where{(name == 'bob') & (salary == 100000)} # Compounds & and | work
  • Operators have changed. As before, operators starting with ! are only available on Ruby 1.9. Upgrade, for the love of all that is good and holy.

    • - Equality

    • != - Inequality

    • ^ - Inequality, for those poor souls on 1.8.x

    • >> - In, (mnemonic: value >> [1,2,3], the value is running INTO the array)

    • << - Not in, (mnemonic: value << [1,2,3], the value is running OUT of the array)

    • ~ - Matches (SQL LIKE)

    • !~ - Not matches (SQL NOT LIKE) Again, only in Ruby 1.9

    • > - Greater than

    • >= - Greater than or equal to

    • < - Less than

    • <= - Less than or equal to

      • Alternative function syntax. Just use parentheses, not sure I'm gonna keep [].

There's more – have a read through the specs for a better idea of what you can do, or clone the repo, run bundle install and play around in rake console.

Something went wrong with that request. Please try again.