Acts_as_taggable_on_steroids i wyszukiwanie

Witam.

Używam acts_as_taggable_on_steroids dla otagowania dokumentu. Oprócz pola do wpisania tagów mam pola, autor, data_wydania itp.

Jak zrobic wyszukiwanie, aby prócz po tagach mozna było szukac po autorze i dacie wydania?
Do szukania po tagach jest : find_tagged_with.
Jak to połączyć z możliwością dodania warunku, że dokument ma byc np: tylko autora A i z data_wydania 1999?
Czy może użyć czegoś innego do tagowania i tamto już ma taki bajer?
Wspomnę, że będę jeszcze to żenił z will_paginate.
Ale z tego co widzę to są jakies info o tym w googlach.

Pozdrawiam
Sebastian

Cześć,
Może to Ciebie nakieruje na cel http://railscasts.com/episodes/111-advanced-search-form :wink:

Mieliśmy podobną potrzebę – AAT_on_steroids + searchlogic + paginacja (z użyciem helperów mislav-will_paginate).

W skrócie:

[code=ruby]# w modelu
def self.prepare_search(params, user_id)
sort_by = params[:sort_by] || “created_at”

search = self.new_search(
  :conditions => {
    :user_id => user_id,
    # inne mozliwe warunki
    :tags => ({:id => params[:tag_id]} if params[:tag_id])
    },
  :order_by => sort_by,
  :order_as => "DESC",
  :per_page => (params[:per_page] || 10),
  :page => params[:page])
return search

end

w kontrolerze

def index
Model.prepare_search(params.merge({:per_page => 16}))

models_arr = @search.find(:all, :joins => "INNER JOIN taggings models_taggings ON models_taggings.taggable_id = models.id AND models_taggings.taggable_type = 'Model' INNER JOIN tags models_tags ON models_tags.id = models_taggings.tag_id")
@models = WillPaginate::Collection.new(@search.page, @search.per_page)
@models.replace(facts_arr)
@models.total_entries = @search.count

end

#gdzie Model (tabela models) to oczywiście jakiś-tam model AR[/code]
Wiem, paskudne, ale nie mam lepszego pomysłu. Ten :join jest straszny (wyciągnięty prosto z AAT_on_steroids).

Czy z perspektywy czasu polecacie acts_as_taggable_on_steroids?
Rozglądam się za czymś dobrym do tagowania i to chyba jest najlepsze, z tego co znalazłem. No chyba że coś przeoczyłem.

I ja się podepnę - jak się ma acts_as_taggable_on_steroids (http://github.com/mattetti/acts_as_taggable_on_steroids) do acts_as_taggable_on (http://github.com/mbleigh/acts-as-taggable-on)??

Ten drugi jakoś popularniejszy.

najprościej:- możesz grupować tagi

Używam od czasów kiedy Railsy były jeszcze 1.2.6 – czyli będą dwa lata już – i jeszcze ani razu się nie przejechałem na tym pluginie.

Kod ma tak przejrzysty i zrozumiały (dla średniozaawansowanego programisty Ruby), że przeróbka czy dorobienie jakiejś funkcjonalności to bardzo prosta sprawa.

A ja miałem problem z wydajnością przy acts_as_taggable_on_steroids (przy 80k tagów), teraz używam http://github.com/geemus/acts_as_taggable_redux/tree/master .

Czym był spowodowany ten problem (brak indeksów) ?

hosiawk: indeksy były, problem w generowaniu chmury tagów, nie ma tag_counts w bazie, za każdym razem liczyło to na nowo, chyba że teraz już to załatwili.