Arel

Rails 6.0 で Active Record (Rails 本体のリポジトリ) にマージされた。

参考:

rails/arel.rb at v6.0.0.rc1 · rails/rails – GitHub

Merge Arel by matthewd · Pull Request #32097 · rails/rails – GitHub

Merge Arel into Active Record · rails/rails@17ca170 – GitHub

ドキュメント

参考:

Documentation for rails/arel | RubyDoc.info

概要

参考:

Rails の Arel を調査してみた – Qiita

Arel でクエリを書くのはやめた方が良い5つの理由 – Qiita

Arel とは何者なのか? | TIM Labs

Intro to Arel | Building VTS

使い方

参考:

Arel::Table を使ってなるべく生の SQL を書かずに済ます方法 | TechRacho

Rails で複雑な SQL 文を投げたい時に使う ArelTable | yamarkz’s blog

where に SQL の文字列を渡したくない!- Qiita

ActiveRecord4 でこんな SQL クエリどう書くの? Arel 編 | TIM Labs

Arel で色んな SQL を組み立ててみる | ryopeko の何か

Rails で ActiveRecord / Arel を使って複雑な SELECT 文を実行する方法 | Rails Webook

arel_table を使った時のメモ | DoRuby

Ransack のための Arel 入門 | 猫Rails

Composable Query Builders in Rails with Arel | The Great Code Adventure

まとめ

参考:

ActiveRecord の arel_table から作れる条件式まとめ – Qiita

比較/以上・以下・超過・未満/Range

参考:

Rails (ActiveRecord) で gt、lt を使う | ワシはワシが育てる

Rails の ActiveRecord で SQL / Arel を使わずに以上・以下・より小さいの比較演算を実現する – Qiita

レールから外れないための ActiveRecord リファレンス | 波打際のブログさん

サブクエリ

参考:

Arel でサブクエリ – Qiita

arel_table を利用して exists の外部副問い合わせを実現する | rails がんばる子

Ho do I reference a subquery using an alias in an AREL query? – Stack Overflow

LIKE

参考:

Arel で LIKE とかいう Rails | \ay diary

matches – rails/predications.rb at v6.0.0 · rails/rails – GitHub

Arel::Table

参考:

arel_table – rails/core.rb at v6.0.0 · rails/rails – GitHub

rails/table.rb at v6.0.0 · rails/rails – GitHub

Arel::Table.engine

参考:

Arel::Table.engine – rails/active_record.rb at v6.0.0 · rails/rails – GitHub

Arel::Nodes

参考:

Arel::Nodes を使って Arel で複雑な SQL 文を作っちゃおう – Qiita

rails/node.rb at 6-0-stable · rails/rails – GitHub

or

参考:

Rails の model で WHERE カラム名 IN [配列] OR カラム名 IN [配列] 検索するメソッドの書き方 – Qiita

ActiveRecord で join と or と and が入り混じった場合 | tail -f pinzo.log

or – ActiveRecord::QueryMethods | Ruby on Rails API [Official]

Added #or to ActiveRecord::Relation by matthewd · Pull Request #16052 · rails/rails – GitHub

Merge Pull Request #16052 Added #or to ActiveRecord::Relation · rails/rails@9e42cf0 – GitHub

IN 演算子

参考:

Where IN with multiple columns – Stack Overflow

multi-column IN clause – Stack Overflow

IN clause – Stack Overflow

join

参考:

Rails で同一テーブルに複数回  join する際に明示的 alias を付ける方法はありませんか? – QA@IT

Arel::Nodes::Union / Arel::Nodes::UnionAll

Arel::Nodes::Union を使う。

a = User.where(id: 1)
b = User.where(id: 2)

union = Arel::Nodes::Union.new(a.ast, b.ast)

User.find_by_sql(union.to_sql)

参考:

Sql Union in postgresql · Issue #158 · rails/arel – GitHub

arel union and latest conversation from messages – Stack Overflow

union

参考:

union – rails/select_manager.rb at v6.0.0 · rails/rails – GitHub

Fix: Arel now emits a single pair of parens for UNION and UNION ALL by kbrock · Pull Request #34437 · rails/rails – GitHub

Fix: Don’t emit multiple parens for multiple union alls by kbrock · Pull Request #510 · rails/arel – GitHub

mysql parenthesis around UNION · Issue #341 · rails/arel – GitHub

Sql Union in postgresql · Issue #158 · rails/arel – GitHub

Make union/except/intersect chainable as SelectManager by jsanders · Pull Request #320 · rails/arel – GitHub

ActiveRecord UNION left out · Issue #939 · rails/rails – GitHub

Arel::Nodes::Union does not have an alias #as · Issue #428 · rails/arel – GitHub

to_sql で union を使う

参考:

ActiveRecord 4.2 以上で union する方法 – Qiita

to_sql in Rails 4.2 returns parameterized queries instead of full SQL statements · Issue #18379 · rails/rails – GitHub

project

参考:

project – rails/table.rb at v6.0.0.rc1 · rails/rails – GitHub

project – rails/select_manager.rb at v6.0.0.rc1 · rails/rails – GitHub

Arel::SelectManager

参考:

rails/select_manager.rb at v6.0.0.rc1 · rails/rails – GitHub

Arel.star

参考:

Method: Arel.star — Documentation for rails/arel | RubyDoc.info

Arel::Attribute

参考:

rails/attribute.rb at v6.0.0.rc1 · rails/rails – GitHub

Arel::Nodes::Node#to_sql

参考:

to_sql – rails/node.rb at v6.0.0.rc1 · rails/rails – GitHub

Arel::Visitors::ToSql

参考:

rails/to_sql.rb at v6.0.0.rc1 · rails/rails – GitHub

accept

参考:

accept – rails/visitor.rb at v6.0.0.rc1 · rails/rails – GitHub

visit

参考:

visit – rails/visitor.rb at v6.0.0.rc1 · rails/rails – GitHub

ORDER BY

参考:

Is there a clean way to use ORDER BY inside an Arel NamedFunction Node? – Stack Overflow

Arel::SelectManagerTest

参考:

rails/select_manager_test.rb at v6.0.0.rc1 · rails/rails – GitHub

Squeel

**DEPRECATED**

参考:

activerecord-hackery/squeel: Active Record, improved. Live again – GitHub

Squeel の書き方を Rails5 に対応させるメモ – Qiita

BabySqueel

参考:

rzane/baby_squeel: An expressive query DSL for Active Record 4 and 5 – GitHub

Documentation for baby_squeel | RubyDoc.info

さよなら Squeel – Qiita

コードリーディング

参考:

arel 9.0.0 の一部を読んだ | r7kamura

ソースコード

Arel::Visitors::Visitor

参考:

rails/visitor.rb at v6.0.0.rc1 · rails/rails – GitHub

Arel::Visitors::DepthFirst

参考:

rails/depth_first.rb at v6.0.0.rc1 · rails/rails – GitHub

Arel::Nodes::InfixOperation

参考:

rails/infix_operation.rb at v6.0.0.rc1 · rails/rails – GitHub

Arel::Nodes::ValuesList

参考:

rails/values_list.rb at v6.0.0.rc1 · rails/rails – GitHub

Arel::Predications

参考:

rails/predications.rb at v6.0.0.rc1 · rails/rails – GitHub

Arel::Math

参考:

rails/math.rb at v6.0.0.rc1 · rails/rails – GitHub

テスト

AttributeTest

参考:

rails/attribute_test.rb at v6.0.0.rc1 · rails/rails – GitHub

まとめ/チートシート

参考:

Arel cheatsheet | Devhints

cheatsheets/arel.md at master · rstacruz/cheatsheets – GitHub

Tips

参考:

Rails の Arel の Tips – Qiita

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA