2013-08-19 14 views
7

Ho una struttura gerarchica per il modello Board (implementato utilizzando la gemma ancestry).Una tabella - due modelli

Invece di un modello e alcuni ambiti, vorrei avere due modelli: Board per elementi a livello radice (ancestry valore della colonna è nil), e per il resto Category (ancestry valore della colonna è not nil). Utilizzerebbero la stessa tabella boards.

Come posso fare qualcosa di simile?

risposta

10

È possibile definire in modo definitivo una tabella per un modello utilizzando set_table_name o self.table_name in base alla versione della propria guida. Inoltre è possibile definire un ambito predefinito per ogni query realizzato per questo modello, utilizzando default_scope, quindi una combinazione di entrambi dovrebbe essere quello che stai cercando:

class Category < AR:Base 
    self.table_name = 'boards' 
    default_scope where('boards.ancestry IS NOT NULL') 
end 
3

È possibile specificare il nome della tabella del modello di categoria e generare un campo di applicazione predefinito:

class Category < ActiveRecord::Base 
    self.table_name = "boards" 
    default_scope where('boards.ancestry IS NOT NULL') 
end 

E si dovrebbe essere in grado di interagire con entrambi i modelli con le schede-Tavolo.

Oppure stai con un modello e aggiungi due moduli per il materiale specifico. Dipende dalle tue preferenze.

+1

Wow, esattamente la stessa risposta, ahahah, è stato divertente. – MurifoX

Problemi correlati