このようなデフォルトのスコープを持つモデルクラスがあります
class Avatar
self.table_name = 'attachments'
belongs_to :user
default_scope -> { where(type: 'avatar') }
end
class User
has_one :avatar
end
User.first.avatar
タイプがアバターであるユーザーが作成した最初の添付ファイルを返すことを期待していました。代わりに、(タイプに関係なく) ユーザーの最初の添付ファイルを取得しています。
タイプを機能させるには、タイプを手動で指定する必要があります。
has_one :avatar, -> { where(type: 'avatar') }
関連付けが default_scope を尊重しないのはなぜですか? 期待される結果を返すことを追加する必要がAvatar.all
あります(タイプが「アバター」の場合のみ)。