2016-04-11 15 views
0

Modelde iki alanın doğru olup olmadığını kontrol eden bir kapsam oluşturmam gerekiyor, ancak her ikisinin de doğru olduğu kayıtları içermemelidir. onların. Umarım bu mantıklıdır.koşullu kapsamı, iki alanın her ikisi de geçerli olan ancak her ikisi de değil

Rails 3.2 ve Mongo 3 kullanıyorum. Bunu gerçekleştirmenin bir yolu var mıdır?

Benim ilk girişimi

scope :with_training_complete, where(
:volunteer_training_completed => true 
).or(:face_to_face_training_attended => true) 

olmuştur ama bu geri ikisinin de geçerli olması kayıtları getirir. Herhangi bir yardım çok takdir edilecektir.

+0

'kapsamı:: - Bu deneyebilirsiniz' ("gerçek YA = true face_to_face_training_attended = volunteer_training_completed") with_training_complete Bu oluşturmak götürdü? – dp7

+0

@dkp aşağıdaki hatayı alıyorum Mongo :: OperationFailure: SyntaxError: Beklenmeyen tanımlayıcı ' – DMH

+0

ne istediğinizi özel veya: (p VE DEĞİL q) VEYA (q VE DEĞİL p). Bunu mongo ile '$ ve', '$ or' ve' $ '' sorgu operatörlerini – VonD

cevap

0

.

scope :with_training_complete, where(:$or => [ { :video_training_completed => true }, { :face_to_face_training_completed => true } ]) 
0

Bunun için ^ kullanıyorsunuz.

Bu ne yaptığını açıklayacağız: Ben Vond yorumuna ne istediklerini başardı

irb(main):002:0* a 
=> 1 
irb(main):003:0> a ==1 
=> true 
irb(main):004:0> b=2; 
irb(main):005:0* (a==1) && (b==2) 
=> true 
irb(main):006:0> (a==1)^(b==2) 
=> false 
irb(main):007:0> (a==1)^(b==3) 
=> true 
irb(main):008:0> 
İlgili konular