Donc je suis en train de refaire l’appli. En utilisant note et notes
class SampleDBB < ActiveRecord::Migration
def self.up
puts ‘Creation de la table: Note’
create_table :note, :force => true do |t|
t.column :title, :string
t.column :body, :text
t.column :created_at, :datetime
end
end
def self.down
drop_tables :note
end
end
Quand je tape
rake migrate
J’ai ce jolis message
rake aborted!
uninitialized constant SampleDbb
class SampleDBB < ActiveRecord::Migration
def self.up
puts ‘Creation de la table: Note’
create_table :notes, :force => true do |t|
t.column :title, :string
t.column :body, :text
t.column :created_at, :datetime
end
end
def self.down
drop_tables :notes
end
end
voila le fichier database.yml
development:
adapter: sqlite3
database: db/monApp.sqlite3
renomme ta classe de migration en ‘SampleDbb’ au lieu de ‘SampleDBB’:
super ca marche.
Le fait d’avoir mis des majuscule dans le nom de la bdd a posé
problème c’est ca ?
guillaume m’avait expliquer ceci
“Après avoir jeté un coup d’oeil au code, voici la ligne qui pose
problème,
dans l’action list du contrôleur Notes : @notes_pages, @notes = paginate :notes, :per_page => 10
Avec cette ligne, il va chercher un modèle “Note” (singulier de
“notes”).
Mais ton modèle est un pluriel, donc il ne le trouve pas, et plante
(d’où
le “uninitialized constant Note”).”
Je pensais bettement avoir compris. Qu’il fallait que je créer un
controlleur ‘note’ et non note. J’ai donc tapé dans le terminal .
script/generate scaffold note
Ca me créer toujours un controlleur “notes” et non “note”, mais
malheurs je vois toujours “notes_controller.rb” et non
“note_controller.rb”
renomme ta classe de migration en ‘SampleDbb’ au lieu de
‘SampleDBB’:
super ca marche.
Le fait d’avoir mis des majuscule dans le nom de la bdd a posé
problème c’est ca ?
Par contre pour des raison de simplicité a la relecture, on esseye de
creé un fichier de migration par model. C’est pour cela que dans la
verson 1.1 de Rails, quand tu genere un model , il te creer un
fichier de migrations
associé.Ex
Apres si tu as besoin de modifié une table deja existant tu genere un
nouveau fichier.
De Plus tu peut aussi generé un fichier de migration en passant par
le generateur integré a Rails
Ex
[03:17:50]lePrecieux[sampleApp]$ script/generate migration
addNoteTimestamp
exists db/migrate
create db/migrate/002_add_note_timestamp.rb
[03:18:25]lePrecieux[sampleApp]$
De cette maniere nes nom de classe sont bons.
[Snip]…
script/generate scaffold note
Ca me créer toujours un controlleur “notes” et non “note”, mais
malheurs je vois toujours “notes_controller.rb” et non
“note_controller.rb”
C’est bien le scaffold prend comme argument ne nom du model
corespondant pour generer le controller et le reste
Le nom du model est Note au masculin et il va generer un
notes_controller au pluriel c’est la convention, les controller sont
toujours au pluriel.
J’ai peut être rien capté aussi
Mais non on a tous luté au debut
script/generate migration sampledbb (créer la dbb)
Normelement pas besoin , la bdd sera crée lors de l’exécution du la
1ere migration
script/generat scaffold note (génére le controlleur )
Oui tout a fait
script/generate model note (génére le model)
c’est bon aussi
donc pour ne pas avoir de problème au lieu de faire
rake migrate
script/generate scaffold note
je fais plus tot
script/generate model note
Apres tu rempli ton fichier de migration
Puis
rake environment RAILS_ENV=development migrate comme cela tu migre
seulemnt la base de dev
Puis
script generate scaffold note
Don si tu veux créer l’ensemble, sans passer par le scaffold, il faut que tu
tapes:
script/generate model Note
script/generate controller Note
créer les views dont tu as besoin dans
app/view/note/nom_de_ta_vue.rhtml
Tout ce que je veux en fait. C’est arriver a faire en sorte de ne plus
avoir de problèmes avec les singuliers/pluriels. Et de ne pas faire
des choses également inutil. Comme générer deux fois un model avec
deux méthodes différentes