2012-10-01 16 views
6

ödeme modelim için ücretler listesini görüntülemek için raylar projemde Ransack sort_link kullanıyorum. Bununla birlikte 'FEE_AMOUNT' yerine ödeme modelinin niteliği, ancak (ödeme aittir) fatura modelinin bir sınıf yöntemi değildir. Ne şu anda sahip olduğu: = sort_link @searchÖznitelikler için Ransack sort_link kullan

<%: bill_fee_amount, "Kolaylık Ücret" %> Geçerli ödeme ait faturası erişir ve çağırmalıdır

Bazı hesaplamalar yapar ve bir float verir bu fatura fatura 'fee_amount' yöntemi. Bu aramayı umduğum şamandıralar.

bu ben uğraşıyorum modelin özelliklerine göre tek tür olabilir yapılabilir ya edilebilir mi?

cevap

0

Ransack Metaarama halefi olduğunu ve Meta arama belgelerine göre, özel aramalar oluşturabilir.

https://github.com/ernie/meta_search

Böyle bir şey işe yarar mı:

scope :sort_by_bill_fee_amount_asc, joins(:bill).select('sum("bills"."fee_amount") AS bill_fee_amount').order('bill_fee_amount ASC') 
scope :sort_by_bill_fee_amount_desc, joins(:bill).select('sum("bills"."fee_amount") AS bill_fee_amount').order('bill_fee_amount DESC') 

soru hesaplama tam olarak bu yüzden dünyanın sadece bir toplamı olduğunu kabul ne olduğu konusunda net değildi İşte link alan fee_amount olarak adlandırılmıştır. Ne yazık ki, muhtemelen bundan daha kötü ve bence kötü SQL hesaplaması Payment modelinde yer alması gerekecek.

bence önemli nokta, SQL SQL bunu hesaplamak olmalı ve Ransack arama istediği isimle dahil böylece üzerinde ayırırken sütunu içermesi gerekir olmasıdır.

Umarım bu yardımcı olur.

+2

Kontrolü Bu [konu] (https://github.com/ernie/ransack/issues/61). Ransack meta_search'in aynı işlevselliğine sahip değil. Dahili olarak, her zaman modeli veritabanında tanımlandığı gibi kullanıyor ve kapsamları tarafından oluşturulan geçici tabloları kullanamıyorum. –

2

Bunu geliyor, ama this issue kontrol altüst ile gibi. Bazı insanlar bu işlevsellik için yamalar yapmış gibi görünüyor, ama onları denemedim.

Ransack, dahili olarak, her zaman modeli veritabanında tanımlandığı şekilde kullanır ve kapsamlar tarafından oluşturulan geçici tabloları kullanamazdım.

PD: Her zaman geri bu soruya gelip cevap olarak yorumunu yeniden bir çalışma: P

İlgili konular