Migliori pratiche e concetti di categorizzazione degli annunci

1

Sto scrivendo una pagina web in Ruby on Rails, quindi posso imparare meglio la lingua e il framework.

Ho un modello User quale has_many Classifieds modelli che has_many Photos quale accept_attachment :image .

Quindi tutto funziona perfettamente, l'utente crea il Classified, aggiunge dettagli e foto. Il modello utente e il modello CRUD di Classifieds sono implementati e in esecuzione!

Ora che la funzionalità di base è ok, voglio iniziare a implementare la categorizzazione e la ricerca.

Un'opzione è creare un modello Category che has_many Subcategories .

Un'altra opzione ha a che fare con Tags come questo tutorial fornisce: link

Ricorda che questo non è un sito di annunci generali, è specifico per musicisti e strumenti / servizi musicali.

Quando usi il sito, dovresti essere in grado di sfogliare annunci

  1. Effettuando una ricerca
  2. Navigando da una barra di navigazione che avrà le categorie.

Qual è il modo migliore per affrontarlo?

  1. Devo avere un sacco di tabelle predeterminate nel mio db (sottocategorie) da cui riempio automaticamente i moduli sulla creazione classificata?
  2. Devo semplicemente implementare i tag e salvare solo i moduli (che offrono all'utente una maggiore flessibilità nell'inserimento dei dati)?

Generalmente mi sto scuotendo la testa per questo e quale sarebbe il modo migliore per farlo.

Grazie in anticipo:)

    
posta frcake 17.08.2016 - 12:55
fonte

1 risposta

2

Per costruire qualsiasi tipo di gerarchia, vorrete quella che viene definita una relazione di auto-unione. Consideriamo un'applicazione di blogging classica:

classCategory<ActiveRecord::Basehas_many:subcategories,class_name:'Category',foreign_key:'parent_id'belongs_to:parent,class_name:'Category'has_many:postsendclassPost<ActiveRecord::Basebelongs_to:categoryend

QuestoèunpatternestremamentepotenteinquantoconsentedicrearequalsiasiprofonditàdigerarchiaeconsentedievitaredieseguirepiùviagginelDBperinterrogaretabellediverse.

InquestocasolarelazionetraPosteCategoriaèindividuale.Seinvecevogliamounarelazionepiùnaturaleamolti(M2M)abbiamobisognodiunatabelladijoin:

class Category < ActiveRecord::Base
  has_many :subcategories, class_name: 'Category', 
                           foreign_key: 'parent_id'
  belongs_to :parent, class_name: 'Category'
  has_many :categorizations
  has_many :categories, through: :categorizations
end


class Categorization < ActiveRecord::Base
  belongs_to :category
  belongs_to :post
end

class Post < ActiveRecord::Base
  has_many :categorizations
  has_many :categories, through: :categorizations
end

Ciò significa ad esempio che un post potrebbe essere classificato sotto recipes , baking , cookies , hobbies e gluten-free .

Ogni collegamento viene eseguito con una riga nella tabella categorizations . Indipendentemente dal fatto che decidi di chiamare le categorie tassonomie o tag i blocchi predefiniti sottostanti sono praticamente uguali.

    
risposta data 29.08.2016 - 16:22
fonte

Leggi altre domande sui tag