2013-08-08 14 views
5

Zasadniczo chciałbym dodać możliwość głosowania na znaczniki, więc chciałbym mieć kolumnę priorytetu dla każdego znacznika innego modelu.Dodawanie nowej kolumny do znacznika acts_as_taggable_on

Wszelkie pomysły na temat tego, jak to zrobić?

Podejrzewam, że muszę przeprowadzić nową migrację, ale nie wiem, po co ją wykonać. Jaka byłaby migracja?

Dzięki!

Odpowiedz

4

Jak pamiętam, acts_as_taggable tworzy tabelę o nazwie tags, więc trzeba dodać pole do tej tabeli:

rails g migration add_votes_to_tag votes:integer 

i dodaj swoją logikę do głosowania na tag.

P.S. Nie jestem pewien, czy dobrze zrozumiałem twoje pytanie.

+0

Tak właśnie myślałem, ale czy jest to druga tabela, która nie tworzy tej, która faktycznie łączy tag z innym modelem? Po prostu nie wiem, który naprawdę dodać kolumnę. – bahudso

+0

Tak, istnieje tabela, która łączy tag z twoimi modelami, ale nie umieszczasz oceny dla tagu w tej tabeli, ta tabela służy tylko do utworzenia relacji. Jeśli chcesz ocenić swoje tagi, musisz dodać głosy do tagu tabeli – rmagnum2002

+0

lub opisać więcej, co chcesz zrobić, może to się stało, że wszystko jest źle. – rmagnum2002

0

Jeśli chcesz przedłużyć regularne korzystanie z klasą znacznika wydaje się być przypadek, i stworzyć specjalny przypadek dla tych znaczników, które muszą być liczone można polegać na metodzie haka z rdzenia o nazwie [find_or_create_tags_from_list_with_context][1]

class Company < ActiveRecord::Base 
    acts_as_taggable_on :markets, :locations 

    def find_or_create_tags_from_list_with_context(tag_list, context) 
     if context.to_sym == :markets 
      MarketTag.find_or_create_all_with_like_by_name(tag_list) 
     else 
      super 
     end 
    end 
end 
Powiązane problemy