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
概要
参考:
Arel でクエリを書くのはやめた方が良い5つの理由 – Qiita
使い方
参考:
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
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_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
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
mysql parenthesis around UNION · Issue #341 · rails/arel – GitHub
Sql Union in postgresql · Issue #158 · 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
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
コードリーディング
参考:
ソースコード
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
まとめ/チートシート
参考:
cheatsheets/arel.md at master · rstacruz/cheatsheets – GitHub
Tips
参考: