From 4907f96597d6367becb616834ab4efa9fe87717b Mon Sep 17 00:00:00 2001 From: "Rico Sta. Cruz" Date: Mon, 23 Nov 2015 10:43:51 +1100 Subject: [PATCH] arel: add --- .projections.json | 10 +++++++++ arel.md | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 .projections.json create mode 100644 arel.md diff --git a/.projections.json b/.projections.json new file mode 100644 index 000000000..8f4e07373 --- /dev/null +++ b/.projections.json @@ -0,0 +1,10 @@ +{ + "*.md": { + "type": "cheat", + "template": [ + "---", + "title: {basename|capitalize}", + "---" + ] + } +} diff --git a/arel.md b/arel.md new file mode 100644 index 000000000..9acd7c86d --- /dev/null +++ b/arel.md @@ -0,0 +1,52 @@ +--- +title: Arel +--- + +### Tables + +```rb +users = Arel::Table.new(:users) +``` + +### Fields + +```rb +users[:name] +users[:id] +``` + +### `where` (restriction) + +```rb +users.where(users[:name].eq('amy')) +# SELECT * FROM users WHERE users.name = 'amy' +``` + +### `select` (projection) + +```rb +users.project(users[:id]) +# SELECT users.id FROM users +``` + +### `join` + +```rb +users.join(photos) +users.join(photos, Arel::Nodes::OuterJoin).on(users[:id].eq(photos[:user_id])) +``` + +### `limit` / `offset` + +```rb +users.take(5) # => SELECT * FROM users LIMIT 5 +users.skip(4) # => SELECT * FROM users OFFSET 4 +``` + +### Aggregates + +```rb +users.project(users[:age].sum) # .average .minimum .maximum +users.project(users[:id].count) +users.project(users[:id].count.as('user_count')) +```