Domanda

Sto provando i motori di Rails creando un motore di annunci in cui gli utenti possono visualizzare / pubblicare / rispondere agli annunci.

L'applicazione principale contiene codice per l'autenticazione dell'utente e profili mentre esiste un motore che ho creato che gestirà la funzionalità degli annunci.

Ora voglio aggiungere alcuni dati di esempio al database per il motore di annunci. Così ho creato un file rake chiamato 'sample_classifieds_data.rake' in 'vendor / plugins / classifieds / lib / task' e ho aggiunto i file yml in 'vendor / plugins / classifieds / lib / task / sample_classifieds_data'

Il codice del file rake e un file yml di esempio sono disponibili qui: http: //gist.github .com / 216776

Ora il problema è che quando eseguo l'attività rake, non viene generato alcun errore ma i valori non vengono popolati nel database.

Qualche idea? A proposito, è un ambiente di sviluppo e il database è il database di sviluppo.

Ho eseguito un'attività di rake simile per popolare gli utenti di esempio nel database che ha funzionato. l'ubicazione del file rake "sample_data.rake" si trova in "lib / task".

È stato utile?

Soluzione

Il tuo compito sembra buono. L'unica cosa che potrebbe far fallire silenziosamente la tua attività è che il file che stai passando a Fixture.new non punta a un file yml o csv.

Ricontrolla modificando l'istruzione put per stampare l'intero percorso del file che ha importato e confronta ciò che stampa con la tua struttura di directory.

Ad esempio, le cose falliranno silenziosamente se i file del dispositivo iniziano con una lettera maiuscola? Categories.yml invece di categorie.yml

Altri suggerimenti

In rails edge, puoi usare la funzione rake db: seed per aggiungere dati alla tua base. Guarda il commit .

L'uso è piuttosto semplice.

Crea un file db / seeds.rb .
E inserisci il codice che vuoi seminare nel tuo database.

Ad esempio:

Category.create!(:name => 'My Category')
Country.create!(:name => 'Cassoulet Land')

E quando si desidera eseguire il seeding del database, è possibile eseguire un rake db: seed

Se, per qualsiasi motivo, non si desidera utilizzare edge (che sarebbe comprensibile in un ambiente di produzione), è possibile utilizzare Seed Fu , che fa al caso tuo.

L'attività db: seed è stata aggiunta in Rails 2.3.4. Quindi non è necessario eseguire edge.

http: //weblog.rubyonrails .org / 2009/9/4 / ruby-on-rails-2-3-4

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top