Meta_search o ransack

Ransack dovrebbe essere il successore di meta_search ma a me sembra
che quest’ultimo funzioni meglio, mi spiego:

ho un form di questo tipo:

= form_for @search, :url => intra_path do |f|
%p
= f.label :company_name_contains, t(‘company_name’)
%br
= f.text_field :company_name_contains
= f.label :vat_number_contains, t(‘vat_number’)
%br
= f.text_field :vat_number_contains

= f.collection_select :categories_id_equals, @categories, :id, :name,

Ho diverse Company, se cerco valorizzando solo company_name, per
esempio “abc” e c’e’ solo una Company il cui nome contiene “abc”,
meta_search correttamente mi da un solo risultato.
Questa Company ha 5 categories associate.
Se faccio la stessa ricerca usando ransack, cambiando :search con :q e
le altre cose indicate nelle doc, ottengo invece 5 risultati, tanti
quante sono le categories associate alla Company cercata.

Ciao devi usare una distinct per evitare duplicati, soprattutto se
ransack mette in join più tabelle.

Nel readme di github trovi un esempio cosi:

def index
@q = Person.search(params[:q])
@people = @q.result(:distinct => true)
end

devi usare result(:distinct => true)

2011/12/23 francesco agati [email protected]:

devi usare result(:distinct => true)
Si ma trovo meta_search…come dire…piu’ intelligente.
Nel caso specifico se cerco una Company per company_name senza mettere
alcun valore nelle categories associate, meta_search fa una ricerca
solo sulla tabella companies senza nessuna join cosa che invece fa
ransack, cioe’ anche se la ricerca non prende in considerazione le
categories, ransack fa ugualmente le select utilizzando le joins,
meta_search no.