Routes (2)


#1

Salut,

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 :frowning:
rake aborted!
uninitialized constant SampleDbb

Je me suis gourée ou ?

Bolo


#2

As tu configuré ton acces a la base de donné dans ton fichier config.yml
De plus, il faut que tu nomme ta table notes et pas note.

La convention est la suivante :
- le nom des tables doit etre au pluriel (une table contient des
enregistrements)
- le nom des models doit etre au singulier (ca represente un model
de donné)
- le nom des controller doit etre au pluriel (un controller gere
plusieurs objets model)

Le 7 avr. 06 à 17:28, Bolo M. a écrit :

class SampleDBB < ActiveRecord::Migration
def self.up
puts ‘Creation de la table: Note’
create_table :note, :force => true do |t|
create_table :notes
t.column :title, :string
t.column :body, :text
t.column :created_at, :datetime
end
end

def self.down
drop_tables :note
c’est drop_table :note la
Je me suis gourée ou ?
Voila HTH


#3

Merci guillaume pour tes explications.
J’ai corrigé j’ai rajoutés un s à note.

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

test:
adapter: sqlite3
database: db/monApp.sqlite3

production:
adapter: sqlite3
database: db/monApp.sqlite3

la migration ne s’effectue pas :frowning:

Le 07/04/06, guillaume garceraremoved_email_address@domain.invalid a écrit :


#4

la migration ne s’effectue pas :frowning:

renomme ta classe de migration en ‘SampleDbb’ au lieu de ‘SampleDBB’:

class SampleDbb < ActiveRecord::Migration

end

Richard


#5

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”

:frowning: J’ai peut être rien capté aussi

Bolo


#6

Le 8 avr. 06 à 14:47, Bolo M. a écrit :

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

[03:13:51]lePrecieux[sampleApp]$ script/generate model note
exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/note.rb
create test/unit/note_test.rb
create test/fixtures/notes.yml
create db/migrate
create db/migrate/001_create_notes.rb
[03:14:10]lePrecieux[sampleApp]$

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.

:frowning: J’ai peut être rien capté aussi
Mais non on a tous luté au debut

Voila HTH


May the force be wih you young padawan.


#7

Le 8 avr. 06 à 15:51, Bolo M. a écrit :

Alors si j’ai bien tout compris.

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

Bolo


May the force be wih you young padawan.


#8

Donc je fais comme ca

  1. Je créer mon application

  2. je configure mon fichier database.yml
    3 je génère le model ‘note’

  3. apres je configure mon fichier de migration (pour ma table)

  4. rake environment RAILS_ENV=development migrate (la je migre ma dbb
    pour la partie dev)

  5. Je génére le controlleur ‘note’

C’est ca ?


#9

Alors si j’ai bien tout compris.

script/generate migration sampledbb (créer la dbb)

script/generat scaffold note (génére le controlleur )

script/generate model note (génére le model)

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

Bolo


#10

script/generat scaffold note (génére le controlleur )
Oui tout a fait

Bah non en fait :x
Scaffold te genere l’ensemble controller, model, view en créant les
actions
classiques dites CRUD (Create, Read, Update et delete).

script/generate model note (génére le model)
c’est bon aussi

Ca c’est correct, mais si tu fais un scaffold, le model est deja créé.

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

#11

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 :slight_smile: avec
deux méthodes différentes

Bolo


#12

Le 8 avr. 06 à 16:23, Bolo M. a écrit :

Donc je fais comme ca

  1. Je créer mon application

  2. je configure mon fichier database.yml
    3 je génère le model ‘note’

  3. apres je configure mon fichier de migration (pour ma table)

  4. rake environment RAILS_ENV=development migrate (la je migre ma dbb
    pour la partie dev)

  5. Je génére le controlleur ‘note’

script/generate scaffold note génère tout le code dit “scaffold”
ou si tu veut tout écrire par toi même (pas conseillé au debut)
script/generate controller notes génère un controller vierge

C’est ca ?

Oui c’est bien ca.
Et la tu verra la magie de rails, tu n’aura plus qu’a pointé ton
navigateur sur ton appli e regardé la puissance de Rails.