2011-11-08 12 views
5

Questo è per un progetto Ruby on Rails 3.0.x.Ruby/Rails - Accede a una tabella "lookup" senza modellarla?

Ho una tabella di "ricerca" con i dati di un fornitore.

Quando si importano dati da un'altra fonte, desidero controllare questa tabella (join su SKU) per dati aggiuntivi.

Non mi sembra giusto creare un modello per questo tavolo nella mia app. I dati non verranno mai modificati dalla mia app e non è necessario avere associazioni di modelli oltre alla ricerca dei dati che ho appena menzionato. È solo occasionalmente accessibile per controllare alcune informazioni.

Qual è la procedura migliore per accedere a questa tabella?

Grazie.

risposta

9

Non c'è niente di male nella creazione di un modello attorno ad esso, ma se si desidera evitarlo, si dovranno inviare query SQL raw al DB per ottenere i dati come alternativa.

query prime: Rails raw SQL example

D'altra parte, penso che la motivazione per il confezionamento di un modello intorno ad esso va al di là se si desidera modificarlo. Ho sicuramente app che hanno modelli attorno a tabelle che non cambiano mai (vale a dire un elenco di terminologia specifica per app, un elenco di città/stati e altri dati statici che vengono importati una volta e mai modificati). ActiveRecord inoltre avvolgerà le colonne in metodi facilmente accessibili, in modo da poter leggere facilmente questi dati, per non menzionare tutti i metodi di convenienza intorno all'ordinamento, alla ricerca, ecc.

2

Un'altra opzione è quella di memorizzarlo in un YML e quindi caricare che YML è una costante nel file environment.rb.

Ti piace questa:

LOOK_UP_TABLE = YAML.load_file("#{RAILS_ROOT}/misc/vendor_data.yml") 
1

Perché non mi sembra giusto per creare un modello per ... un modello? Se è nel database, non c'è motivo per non avere un modello per questo.

Si potrebbe voler limitare la sua definizione resource, o non mapparla affatto, per evitare l'accesso. Detto questo, è probabile che tu voglia essere in grado di aggiornarlo: un'interfaccia web è un modo semplice per farlo, che sia guidato da file o da utente.

Altre opzioni includono il caricamento da un file di configurazione (Yaml, XML, specifico del fornitore), il recupero da un servizio, ecc. Queste soluzioni potrebbero essere autonome o anche sfruttare un approccio supportato dal modello.