LoginSignup
1
0

More than 1 year has passed since last update.

lastメソッドについて

Last updated at Posted at 2023-05-11

はじめに

レコードが存在しない場合でもlastメソッドを呼んだ時にエラーにならない!
lastメソッドの前に、ぼっち演算子を記載しないとエラーになるのかなと思ったので気になった、、

該当するコード

viewでadmin_informationsの最終レコードを表示させたい
※admin.admin_informationsが存在しないパターンもある

views/admins/index.html.slim
- information = admin.admin_informations.last

それぞれのモデルは以下です。

models/admin.rb
class Admin < ApplicationRecord
  has_many :admin_informations
~省略~
end
models/admin_information.rb
class AdminInformation < ApplicationRecord
  belongs_to :admin
~省略~
end

モデルが空の場合にlastメソッドを呼び出してもエラーにならない理由

  • レコードが存在しない場合はnilを返すのではなく、空のActiveRecord::Relationを返すから
  • has_manyで定義された関連モデルも同様に、レコードが存在しない場合は空のActiveRecord::Relationを返すから

→今回のパターンの場合、has_manyを使うことによって定義されるadmin_informationsは、関連付けられたすべてのオブジェクトのリレーションを返し、存在しない場合関連するモデルの空のActiveRecord::Relationを返す

lastメソッドについて

  • lastメソッドとは、最後のレコードを取得するメソッド
  • データベースのテーブルの最後の行を取得するために使用する
  • アクティブレコードオブジェクトが存在しない場合(テーブルが空の場合)にはnilを返す

まとめ

アクティブレコードオブジェクトが存在しない場合にはnilを返す!!!

参照

last | Railsドキュメント
has_many

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0