tusbasaのブログ

業務や勉強中に調べたことを自分用にメモするブログ

【rails】scope はnilを返さない

class Post < ApplicationRecord

  scope :latest_post, ->(user_id)  do
    where(user_id: user_id).last
  end

end

Post.latest_post(1)
=>すべてのレコードが返る

Post.where(user_id: user_id)nilが返る場合scopeはallを返すような挙動になるので注意。

whereで該当レコードがない時は空のActiveRecord::Relationが返る。 find_byで該当レコードがない場合はnilが返るので、その場合全てのレコードが返る。

参考 https://qiita.com/Gro/items/80340ef352d0036f44cd