#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