2014-06-18 26 views
5

ile başka bir özellik ile karşılaştırılması. Ancak, bir özniteliğin diğerine nasıl karşılaştırılacağı konusunda herhangi bir belge bulamadım. Mesela, nasıl bir durum yaratabilecek: Ben uzunca bir süre altüst kullanıyorumRansack bana bir öznitelik, bir yüklem ve bir değerle koşulları oluşturmanızı sağlar Ransack

WHERE column_a < column_b 
+0

Yani column_a ve column_b özelliklerini de istiyorum. . Result.to_sql' değil 'Person.search (:, {name_object: ABCD} {1 id_eq}) gibi – Sontya

cevap

2

ama hiç ihtimal aradığınız şeyi yapmak görmüyorum. Ne istediğiniz bir olduğunu "Dava -> zaman" Raylar veya ActiveRecord ile SQL gibi üretilebilir açıklamada,. Ransack size o zaman zaten bahsedildiği NEREDE Bildirimi çevirir nitelik, yüklem ve değer, tanımlayarak, özel bir SQL komutu oluşturma olanağı verir

. Ransack'a istediğiniz şeyi filtrelemesini doğrudan söyleme fırsatım yok. Ancak:

scope :column_b_gt_columnb_a, -> { where('column_b > column_a') } 

Sonra böyle aramanızı inşa edebilirsiniz:

Eğer böyle bir kapsam oluşturmak olduğunu ne olabilir

gerçekten Muhtemelen

Object({ column_b_gt_columnb_a: true }) 

sen ne aradığını, ama sanırım Bu, en iyisi ...

Ve Rails ile yapmak isterseniz, değerleri karşılaştırmak veya yukarıda kullandığım sözü edilen deyimi kullanmak istersiniz. Bir SQL deyimi örneği için

Records.each do |i| 
case i.variable_a 
    when i.variable_b 
    # do something when it's the same 
    when i.variable_a > i.variable_b 
    # do something when it's greater 
    end 
end 

Bu biraz yardımcı olur

How do I compare two columns for equality in SQL Server?

Umut buraya bak!