Help us understand the problem. What is going on with this article?

Rails の Active Record に like がない理由

More than 3 years have passed since last update.

Active Record に like がない理由を見つけたのでメモっとく。

Rails 4 で not が追加されたとき likenot_like も追加される予定だった。実際のところコミットされた後にロールバックされた。

https://github.com/rails/rails/commit/8d02afeaee8993bd0fde69687fdd9bf30921e805

そのロールバックに対してのコメントが紛糾したわけだが、DHH がロールバックした理由を4つあげている。

Here are the design considerations that I had when we decided to roll this back:

1) It's an odd mismatch of SQL and Ruby with the % sign for designating the order.
2) It opens the door for wanting to expand this line of DSL further (including undesireable ventures into greater_or_equal_than).
3) It's being a fairly uncommon query not in need of optimization.
4) not_like is nasty (and "dislike" wont cut it either).

Feel free to extract this into a plugin and mix it into your own flavor of Rails, though.

拙いながら意訳してみる。(もっといい訳をコメントで提案して貰えたらと思う。)

我々がロールバックを決定したデザイン上の理由:

1) % 記号について SQL と Ruby で奇妙なミスマッチがある
2) DSL の境界線を押し広げる要求への扉を開いてしまう(greater_or_equal_than への望ましくない冒険を含む)
3) 最適化の必要がないとしてもかなり珍しいクエリである(like は Rails にて特殊な文法を新たに作ってサポートするほどにメジャーなクエリではない」という意味合い。sugitak さんのコメントより)
4) not_like はイケてない(dislike でもダメだ)

とはいうものの、遠慮なくこれをプラグインとして抜き出して、それを Rails の自前の味付けとして追加してもらって構わない。

僕としては likenot_like が入らなかったことを残念に思う気持ちもあるが、こういう判断が積み重なって一貫性のある設計の Rails が出来上がっていると考えると割と素直に受け入れられる。DHH の2番目の理由が一番納得できるかな。

LIKE を SQL でベタに書かなきゃならないとか信じられないって言ってる Rails エンジニアさんが近くにいたらそっとこのことを教えてあげてほしい。

takuya0301
Mikatus 株式会社の VP Engineering 兼デザイングループグループリーダー。最近は Event Storming と Lagom に興味がある。
https://takuya0301.github.io
mikatus
税理士・会計事務所向けクラウドシステムの企画、開発、提供事業を行っております。
https://www.mikatus.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした