0

このようなデフォルトのスコープを持つモデルクラスがあります

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あります(タイプが「アバター」の場合のみ)。

4

0 に答える 0