Использовать область с имя_класса в rails

#ruby-on-rails #mongoid

#ruby-on-rails #mongoid

Вопрос:

Я использую rails 5.1 с mongoid.

У меня есть класс с областью

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

Затем в другом классе, на который ссылается вложение, я хочу получить все вложения, которые являются документами.

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

Приведенное выше выбирает все вложения и не учитывает документы области, которые собирают все значения is_document, равные true.

Комментарии:

1. Предположительно, нерабочий вызов — это что-то вроде @user.documents , вызывающего метод, documents который определен вашим has_many объявлением на User . Это возвращает перечислимый ActiveRecord, для которого доступен метод, documents который определен вашим scope объявлением на Attachment . Итак, вы пробовали @user.documents.documents ?

Ответ №1:

Вы можете передать область как proc, в вашей has_many ассоциации

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