在Rails中将作用域与class_name一起使用

问题描述

我正在使用带有蒙古型的Rails 5.1。

我有一个带有范围的类

class Attachment
    scope :documents,-> { where(is_document: true) }

然后在附件所指的另一个类上,我要获取所有作为文档的附件。

class User
  has_many :documents,class_name: 'Attachment',foreign_key: :user_id

以上内容选择了所有附件,并且不考虑收集所有is_document等于true的范围文档。

解决方法

您可以在您的has_many关联中将范围作为proc传递给

class User
  has_many :documents,-> { documents },class_name: 'Attachment',foreign_key: :user_id
end