2010-11-07 14 views
17

Ho configurato il mio database.yml per puntare al mio database mysql esistenterotaie 3: come generare modelli per tabelle di database

come posso generare modelli da esso esistente?

rails generate model existing_table_name 

dà solo un modello emty ..

+0

ti offre un modello vuoto? cosa significa? Cosa stai cercando di fare? :) – s84

+0

mi aspettavo che contenga tutti i campi e le relazioni di quella tabella, ma tutto quello che ottengo è una classe vuota che deriva da ActiveRecord :: Base –

+0

ciò che si sta facendo non è possibile a meno che non si creino i propri script. – s84

risposta

9

A Rails modello non mostra i vostri campi, ma è ancora possibile utilizzarli. Prova quanto segue. Supponendo di avere un modello di nome ModelName e un campo chiamato "nome", il fuoco la console Rails e digitare:

ModelName.find_by_name('foo') 

Dato un nome che esiste nel DB, si dovrebbe vedere i risultati.

Rails non deduce tuttavia relazioni, ma se il database segue le convenzioni Rails, queste vengono facilmente aggiunte.

Aggiornamento

ho notato questo particolare la mancanza di chiarezza ("magia") è una fonte di confusione per i neofiti di Rails. Puoi sempre guardare in schema.rb per vedere i modelli e tutti i campi in un unico posto. Inoltre, se si preferisce visualizzare lo schema per ciascun modello nel file del modello, è possibile utilizzare la gemma annotate_models, che inserirà lo schema db in un commento nella parte superiore del file del modello.

+0

Wow, grazie non ho mai saputo che questo potrebbe accadere! ehhe. Imparo qualcosa di nuovo oggi –

+0

I modelli di rails generati mostrano i tuoi campi nella chiamata attr_accessible. – holaSenor

1

ActiveRecord non analizza una definizione di schema. Richiede il DBM per i difetti di tabella e calcola i campi al volo.

Lo schema è utile se si intende modificare le tabelle tramite migrazioni. Schema Dumping and You consente di eseguire il dump da utilizzare come riferimento per la creazione di migrazioni.

ActiveRecord effettua alcune supposizioni sulla denominazione delle tabelle e si aspetta che un campo id sia la chiave primaria con un numero sequenziale come tipo. Avere le migrazioni ti aiuterà a rifattorizzare le tabelle e/o nomi e tipi di campi, ma puoi fare le stesse cose tramite la riga di comando del tuo DBM. Non devi seguire lo stile di ActiveRecord, ma farlo aiuta a evitare errori strani e ti consente di dedurre le cose per semplificarti la vita.

1

potrebbe provare Magic Model Generator

+1

Nota: è per Rails 2, nessun Rails 3 disponibile. –

+3

Qualcuno sa di metodi alternativi che generano modelli con relazioni, ecc. Dallo schema esistente in Rails 3? – Arosboro

15

Si può provare Rmre. Può creare modelli per lo schema esistente e tenta di creare tutte le relazioni in base alle informazioni sulle chiavi esterne.

+0

Ho provato Rmre ma ha creato solo le relazioni tra i modelli (ad esempio has_many, belongs_to). Non ha creato gli attributi del modello. – Nick

3

tua risposta è:

$ rake db:schema:dump 

che fisserà un nuovo db/schema.db per creare uno schema del vostro DB.

Problemi correlati