Проблема исправлена ... Оказалось, что был активен активный метод записи, написанный, теперь все работает как ожидалось
Я пытаюсь настроить области, чтобы я мог сделать вызов, который выглядит как
Competitor.of_type(type).at_event(event)
который вернет всех участников типа, которые участвовали в мероприятии Мои модели выглядят примерно как
class Competitor < Competitor
belongs_to :type
has_and_belongs_to_many :events
scope :at_event, ->(event) {where(:event_ids.in => event.competitor_ids)}
scope :of_type, ->(type) where(:type_id => type.id)
end
Следующие работы (возврат мангоидных критериев)
Competitor.of_type(type)
Competitor.at_event(event)
Но когда я их связываю, он печатает что-то похожее на это:
#<Competitor:0x00000109e2b210>
#<Competitor:0x00000109e2ab08>
-------=-=------------------------------------
=> #<Mongoid::Criteria
selector: {},
options: {},
class: Competitor,
embedded: false>
Для каждого из типов Competitor.of_type (type) (критерии первого набора) есть запись конкурента, и если я запустил .count по запросу, я получаю общее количество участников в базе данных.
В верхней части документации по mongoid для областей, она говорит, что все области привязаны и могут применяться к ассоциациям, а затем обсуждается в разделе отношений. К сожалению, я не видел раздел отношений, я не мог найти единственную ссылку на область видимости в разделе основных отношений.
Я смог получить следующее, чтобы вернуть результаты, которые я хотел:
where(:id.in => event.competitor_ids).where(:type_id => type.id)
но если какая-либо часть запроса разделяется на отдельный метод или область, она терпит неудачу и дает результат, который я показал выше.