has_manyな関係でも条件を設定できる
has_manyな関係でも条件を設定できる
has_many で関連付けたモデルに scope を定義しておくと、関連経由のメソッドチェーンでもそのscopeをそのまま呼び出せることを確認したメモ。user.objects.open のように書くと、関連先の絞り込み条件をそのままSQLのWHERE句に反映できる。
class User < ApplicationRecord
has_many :objects
end
class Object < ApplicationRecord
belongs_to :user
scope :open, -> { where(status: 0) }
enduser = User.find(999)
user.objects.open.all #<= できるんだ!?
# => SELECT `object`.* FROM `object` WHERE `object`.`user_id` = 999 AND `myobject`.`status` = 0