mone_pi
@mone_pi

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

lastメソッドについて

解決したいこと

lastメソッドについて気になってしまったので質問させていただきます。
モデルが空の場合でもlastメソッドを呼んだ時にエラーにならないのはなぜでしょうか?
lastメソッドの前に、ぼっち演算子を記載しないとエラーになるのかなと思ったのですが、エラーにならずnilが返ってきました。

該当するコード

viewで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
0

1Answer

has_manyを使うことによって定義されるメソッド(今回の例であればadmin_informations)は、関連するモデルのActiveRecord::Relationを返します。
レコードが存在しない場合はnilを返すのではなく、空のActiveRecord::Relationを返すので、今回のような挙動になります。

Returns a Relation of all the associated objects. An empty Relation is returned if none are found.

2Like

Comments

  1. @mone_pi

    Questioner

    回答ありがとうございます!
    納得しました!

Your answer might help someone💌