[ANN] Plugin: ColumnScope 1.0

ColumnScope Plugin version 1.0 released!

ColumnScope lets you select specified values from your DB into a model
or an array without doing :select => SQL_FRAGMENT and map! {|r|r.foo}
all the time.
This plugin extends ActiveRecord::Base and mixes in named scopes.
ColumnScope is a subclass of ActiveRecord::NamedScope::Scope so it can
be chained with named scopes.

Assume we have a Page(id:integer, path:string, title:string,
body:text, timestamps) model and we have a page listing, there is no
need to load the whole body for every page.
Maybe we need only the path and title:

Page.selects(:path, :title).values.all(:order => ‘id’) # => [[‘/
foo’, ‘Foo’], [‘/bar’, ‘Bar’], …]

Further we can chain it with named scopes:

Page.published.selects(:path, :title).values.all(:order => ‘id’) #
=> [[‘/foo’, ‘Foo’], [‘/baz’, ‘Baz’], …]

or using a shortcut

Page.published.select_all(:path__title, :order => ‘id’) # => [[‘/
foo’, ‘Foo’], [‘/baz’, ‘Baz’], …]

When this page is shown maybe we don’t need the path and id anymore,
but the instance of the model:

Page.published.rejects(:id, :path).find params[:id] # => <Page
title=“Foo” …>

Florian Aßmann