1)の間違いじゃない?と警告します。設定項目などはGitHubに。GitHubfind_byだけで、whereの時はnilでも何もしていない。(GitHubで検索したらwhere(nil)はたくさん使われてたので。bundleするだけです。参考にしたGemGemは書き慣れてないので、いろいろ参考にさせていただいた。Guides公式のガイドもわりと充実してる。一応動く状態になったので、個人プロジェクトで使っていこう。GitHub処理を追うfind_byはそのまま素通りして、whereになげる。where内のcase文。nilの場合はblank?がtrueになるので、selfがそのまま返される。それがtakeされるので最初のレコードが取得される。1の場合は、where!が呼ばれる。where_valuesが以下のように更新される。[1]あとはtakeの時にSQLに変換される。そこはarelの処理。build_arelからcollapse_wheresが呼ばれ、以下のように変換される。#<Arel::Nodes::Grouping>それが、Arel::Nodes::And.newに渡される。\"users\""となる。後から気づいたけど、↑はrelationなので、whereとかを呼んだ後find_byした時の話。User.find_byを直接呼んだ場合は、https://github.com/rails/rails/blob/master/activerecord/lib/active_record/core.rbhttps://github.com/rails/rails/blob/master/activerecord/lib/active_record/querying.rbが呼ばれてる。最終的には同じ処理を通るのでよしとする。characters意図せず、Team.find_by(session[:team_id])みたいなコードを書いちゃってた。session[:team_id])と書きたかった。後者はsessionに何も入ってないとnilが返ってくるけど、前者は一番最初のレコードが返ってきてしまう。(Team.where(nil).takeになっちゃってるイメージ)気づきにくくて時間を無駄にした。ちなみにRailsは4.2。