JA

以下のコードのように、文字列操作やArelのようなメソッドチェインではなく、Rubyの自然な式でクエリを書きたいと思いませんか?

Employee.where { :age >= 50 }.select { [avg(:vacation_hours), sum(:sick_leave_hours)] }

かつてRefinementsを使ってwhereを拡張するactiverecord-refinementsというgemがありましたが、Refinementsをブロックスコープで有効にする機能が処理系の実装上の都合でRuby 2.0から削除されてしまい、その夢は潰えました。 Ruby 4.1の新機能となる予定のProc#refinedを使って、activerecord-refinementsを現代に蘇らせてみましょう。

Magenta Hall
DAY 2 15:25 – 15:40
Shugo Maeda

株式会社ネットワーク応用通信研究所の社長を務めています。 Rubyコミッタとして、callcc、Refinements、Hashの値省略記法、String#{byteindex,bytesplice}などの導入をしてきました。 Railsには、ActiveRecord::Locking::Pessimisticの導入、ActiveSupport::SafeBuffer#subなどのブロック内における後方参照のサポート、その他いくつかのバグ修正を行ってきました。 好きなテキストエディタはTextbringerです。