Domanda

Sto usando RanSack's Sort_Link nel mio progetto Rails per visualizzare un elenco di commissioni per i miei Pagamento modello.Tuttavia, 'fee_amount' non è un attributo del modello pagamenti , ma invece un metodo di classe del modello Bill (che appartiene al pagamento).Quello che sono attualmente è:

.

<%= SORT_LINK @Search ,: Bill_fee_amount, "tassa di convenienza"%>

che dovrebbe accedere a Bill della corrente Pagamento e chiamare il metodo 'fee_amount' su quella Bill , che fa alcuni calcoli e restituisceun galleggiante.Sono questi galleggianti che spero di cercare da.

può essere fatto, o posso solo ordinare per attributi del modello con cui ho a che fare?

È stato utile?

Soluzione

Ransack è il successore di Metasearch e, secondo la documentazione MetaSearch, è possibile creare ricerche personalizzate.Ecco il link:

https://github.com/ernie/meta_search

Penso che qualcosa come questo funzionerebbe:

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')
.

La domanda non era chiara su ciò che il calcolo è esattamente così ho pensato che fosse solo una somma di un campo chiamato fee_amount.Sfortunatamente, probabilmente è molto peggio di quello e penso che il casto calcolo SQL dovrà essere incluso nel modello Payment.

Il punto chiave ritengo sia che l'SQL ha bisogno di includere la colonna su cui si sta ordinando, quindi è necessario disporre di SQL calcolarlo e includerlo con il nome che RANSACK vuole cercare.

Spero che aiuti.

Altri suggerimenti

Non puoi con il ristacchio come arriva, ma controlla Questo problema .Sembra che alcune persone abbiano patch per questa funzionalità, ma non li ho provato.

Ransack , internamente, utilizza sempre il modello come definito nel database e non potreiRendilo utilizzare le tabelle temporanee create dagli scopi.

PD: rielaborato il commento come risposta mentre torno sempre a questa domanda: p

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top