問題を修正しました...どのようにMongoid
予想通りになりましたすべての作品、書か乗り越えアクティブレコード方法があったが、私はセットアップしようとしていますスコープので、私は マイモデルをイベントに出席したタイプのすべての競技者が
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).at_event(event)
のように見える電話をかけることができます
次作品(mongoid基準を返す)
Competitor.of_type(type)
Competitor.at_event(event)
しかし、私はそれらをチェーンするとき、それはこのようなものプリントアウトし:競合他社のそれぞれについて、競争相手のエントリがあります
#<Competitor:0x00000109e2b210>
#<Competitor:0x00000109e2ab08>
-------=-=------------------------------------
=> #<Mongoid::Criteria
selector: {},
options: {},
class: Competitor,
embedded: false>
を。 of_type(type)(最初の連鎖した基準)、クエリで.countを実行すると、データベース内の競合者の総数が取得されます。
スコープのマニュアルのトップには、すべてのスコープが連鎖可能であり、関連付けにも適用できることが記載されています。これについては後の節で説明します。 残念ながら私はリレーションサブセクションを見ませんでしたが、メインリレーションセクションのスコープに対する単一の参照を見つけることはできませんでした。
は私が望んでいた結果を返すために、以下を得ることができた:where(:id.in => event.competitor_ids).where(:type_id => type.id)
が、クエリのいずれかの部分が別々の方法や範囲に分割されている場合、それは失敗し、私は上記の示した結果を提供してい
。 Active Recordのと同様に
ご自身で質問し、解決済みとマークしてください。 –