カクカクしかじか

技術的なアレコレ

Railsコンソールでの変数代入時の豆知識

内容

Railsコンソールでデータをいじる時に、加工したい値を別の変数に移してデータを変更することがよくあると思います。
そんなとき、変数名 = モデル名.find("ID")ってやらなくても良いんだぜ!というのが今回の内容です。
通常通りだと以下のような感じで値を書き換えると思います。

$ task = Task.find("2")
  Task Load (0.3ms)  SELECT  "tasks".* FROM "tasks" WHERE "tasks"."id" = $1 LIMIT $2  [["id", 2], ["LIMIT", 1]]
=> #<Task:0x00007fc0647699a0
 id: 2,
 name: "tama.rbの準備",
 description: nil,
 created_at: Mon, 25 Mar 2019 10:26:08 UTC +00:00,
 updated_at: Mon, 25 Mar 2019 10:26:08 UTC +00:00>

変数に入れなくても後から取り出せる方法

後述の方法では、Task.find("1")って実行してしまった後で、「あっ変数に入れればよかった!」となった時にもう一度クエリを叩かなくても大丈夫なんです。
=_ を使えば以下のような感じでイケます。

$ Task.find("2")
$ task =_
=> #<Task:0x00007fc0647699a0
 id: 2,
 name: "tama.rbの準備",
 description: nil,
 created_at: Mon, 25 Mar 2019 10:26:08 UTC +00:00,
 updated_at: Mon, 25 Mar 2019 10:26:08 UTC +00:00>

最後に

本当に些細なことですが、コンソール上のデータの参照の仕方って「こんな方法もあるんだよ!」ぐらいな軽いテンションで書いたので、そんな感じで読んで頂ければ幸いです。