Forum: Rails France tuto cookBook

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Ba00a402965da738f601b6367cf3224f?d=identicon&s=25 Bolo Michelin (Guest)
on 2006-04-18 18:04
(Received via mailing list)
Salut

je suis en train de suivre le tuto cookbook (la version VF)
j'utilise une de db sqlite3. Alors voila mon problème lors de première
migration de la base; il y pas de blem la table "recipes" est bien
créer.
Apres dans le tuto on demande d'ajouter des champs. J'ajoute mes champs
comme ceci
  def self.up
    puts 'Création de la table'
    create_table :recipes do |t|
       t.column :titre, :string
       t.column :description; :string
       t.column :date; :datatime
       t.column :instruction, :text
    end
  end

mais apres lorsque je remigrate la table, ben la je n'ai aucun
changement la
table ne se créer pas

Bolo
4d3c4ad293c983f47f3eab02796eafc7?d=identicon&s=25 unknown (Guest)
on 2006-04-18 18:22
(Received via mailing list)
Bonjour,

Je ne comprends pas exactement ce que tu fais (quel code est dans quel
fichier) mais avant de creuser plus on peut déjà corriger ton code :

1) le type :datatime n'existe pas. C'est :datetime
2) il faut séparer les arguments des méthodes par des virgules et non pas
des points-virgules ;o)

ce qui donne :

   def self.up
     puts 'Création de la table'
     create_table :recipes do |t|
        t.column :titre, :string
        t.column :description, :string
        t.column :date, :datetime
        t.column :instruction, :text
     end
   end

Déjà ça peut améliorer les choses :o)

Stéphane Thibaudeau.
E9fa5947081cf6b45f89a1f07f064418?d=identicon&s=25 guillaume garcera (Guest)
on 2006-04-18 18:25
(Received via mailing list)
Bonjour,

esseye avec les corections ci-dessous :

> Apres dans le tuto on demande d'ajouter des champs. J'ajoute mes
> champs comme ceci
>   def self.up
>     puts 'Création de la table'
>     create_table :recipes do |t|
>        t.column :titre, :string
>        t.column :description; :string
	  t.column :description, :string
>        t.column :date; :datatime
	  t.column :date, :datetime
>        t.column :instruction, :text
>     end
>   end
>

Voila HTH
6d5a9515e78ed9e9f32aebb41c77cbdc?d=identicon&s=25 Mathieu Fosse (pointcom)
on 2006-04-18 18:28
(Received via mailing list)
Bonjour,


Il serait intéressant que tu indiques le lien vers ce tutoriel.

En fait si j'ai bien compris :
1) tu as créé une table 'recipes'
2) tu veux effectuer des modifications sur cette table en utilisant
'migrate' ? (modification du schéma de la table)


Si c'est ça...

  def self.up
    puts 'Création de la table'
    create_table :recipes do |t|
       t.column :titre, :string
       t.column :description; :string
       t.column :date; :datatime
       t.column :instruction, :text
    end
  end


...ton script (ci dessus) ne peut pas modifier le schéma de la table
'recipes' car il essai de créer cette table alors qu'elle existe déjà.
Il pourrait écraser le schéma de cette table (avant de créer le
nouveau) si l'option :force était positionnée à true.
( au passage attention dans ton script beaucoup de ';' doivent être
remplacer par des ',' et 'datatime' n'existe pas mais 'datetime' lui
oui).

Après modification, voilà ce que ça donne :


  def self.up
    puts 'Création de la table'
    create_table :recipes, :force => true do |t|
       t.column :titre, :string
       t.column :description, :string
       t.column :date, :datetime
       t.column :instruction, :text
    end
  end


En lançant ce script, la table 'recipes' sera droppée et créée avec le
nouveau schéma.

Si tu veux simplement effectuer un ajout, suppression de colonnes...
regarde plutôt du côté de 'add_column'.

Pour plus d'info :
http://api.rubyonrails.org/classes/ActiveRecord/Co...



Mathieu


On 4/18/06, Bolo Michelin <malavoi@gmail.com> wrote:
>        t.column :titre, :string
>
> --
> Martinique Sans Fil
> http://www.martiniquesansfil.com
> _______________________________________________
> Railsfrance mailing list
> Railsfrance@rubyonrails.fr
> http://lists.rubyonrails.fr/mailman/listinfo/railsfrance
>
>
>


--
Mathieu FOSSE
Ba00a402965da738f601b6367cf3224f?d=identicon&s=25 Bolo Michelin (Guest)
on 2006-04-18 23:13
(Received via mailing list)
je vais faire les corrections. Alors j'ai suivi le tuto suivant
http://www.railsfrance.org/files/active/2/On_Lamp_....
Je suis a la page 27. Comme je n'utilise pas mySQL j'ai essayé de
regénérer
la table.

2006/4/18, Mathieu FOSSE <mathieu.fosse@gmail.com>:
Ba00a402965da738f601b6367cf3224f?d=identicon&s=25 Bolo Michelin (Guest)
on 2006-04-18 23:28
(Received via mailing list)
avec le liens expliquant comment fonctionne add_column j'ai écris un
nouveau
script
http://api.rubyonrails.org/classes/ActiveRecord/Co...


class AddFieldsToRecipes < ActiveRecord::Migration
  def self.up
    puts 'Ajouts de champs dans la table'
    add_column :description, :string
    add_colum :date, :datetime
  end
end


mais j'ai des questions

1) Dois je le mettre dans mon fichier 001_create_recipes.rb ?
2) Dois je garder le précédent script me permetant de créer ma base ?
3) pour regéner ma table, je n'ai qu'a faire un rake migrate ?

Bolo

Martinique Sans Fil
http://www.martiniquesansfil.com
E9fa5947081cf6b45f89a1f07f064418?d=identicon&s=25 guillaume garcera (Guest)
on 2006-04-18 23:47
(Received via mailing list)
Que veut tu faire precisement,
* créer une nouvelle table. Dans ce cas ce n'est pas add_column qu'il
faut utiliser mais bien un bloc  create_table
* modifier une table deja existante alors la il te faut bien utiliser
add_column

De plus c'est pas obligatoire mais conseillé n'oublie pas d'ecrire la
methode self.donw qui detriut ce que tu crée dans self.up. Elle est
utilisé dans le cas d'un "downgrade" de ton schema de base de données.

Le 18 avr. 06 à 23:27, Bolo Michelin a écrit :

> 1) Dois je le mettre dans mon fichier 001_create_recipes.rb ?
Dans ston fichier 001_*, tu as la creation da la base de données
ainsi que la ou les tables de base

> 2) Dois je garder le précédent script me permetant de créer ma
> base ?
Je dirai oui si ta table est deja crééee et que ton appli est
fonctionnel, tu

> 3) pour regéner ma table, je n'ai qu'a faire un rake migrate ?
Oui, rake migrate fonctionne de la manière suivante:
Il regarde d'abord le numéro de version du schéma de base de
données (contenu dans la table schema_info) si il n'y en a pas il
part de 1 inclu.
Puis execute tout les scripts de migration entre ce numéro et le
dernier numéro de script qu'il trouve dans le répertoire migration.

Par exemple:
soit le repertoire suivant (cas tiré d'un de mes applis)


* Si mon numéro de schéma est le 2 rake migrate execute tous les
script de 2 exclu a 6 inclus

Si l'on precise un numero de version a rake migrate , il va exécuter
les scripts jusqu'au numéro que tu lui donne
ex: toujours avec 2 comme schéma courant
rake migrate VERSION=5, il exécutera tous les scripts de 2 exclu a 5
inclue

Voila HTH
Ba00a402965da738f601b6367cf3224f?d=identicon&s=25 Bolo Michelin (Guest)
on 2006-04-19 00:08
(Received via mailing list)
_______________________________________________
Railsfrance mailing list
Railsfrance@rubyonrails.fr
http://lists.rubyonrails.fr/mailman/listinfo/railsfrance
E9fa5947081cf6b45f89a1f07f064418?d=identicon&s=25 guillaume garcera (Guest)
on 2006-04-19 07:38
(Received via mailing list)
Le 19 avr. 06 à 00:06, Bolo Michelin a écrit :


>
>
> mais le script pour ajouter un champs. Je dois créer un nouveau
> fichier rb ?
>
>> 2) Dois je garder le précédent script me permetant de créer ma base ?
> Je dirai oui si ta table est deja crééee et que ton appli est
> fonctionnel.
	Oui il te faut un nouveau script dans ce cas la car d'apres ce que
tu dit la table existe deja.
	En gros on fait un nouveau script par modification du model(ou
groupe de modification). Comme cela c'est plus 	facile de revenir en
arriere en cas de probleme.

>
> Je quoi ? tu n'as pas terminé ta phrase :)
     Oups je m'etais mal relu il etatit tard ;)
> soit le repertoire suivant (cas tiré d'un de mes applis)
> 5 inclue
>
> Voila HTH
>
> d'accord je comprends. Donc si je veux ajouter des nouveaux champs.
> Je dois créer un nouveau fichier par exempl 002_add_champs.rb
>
> Ce ficher est créer directement dans l'éditeur ou je dois le générer ?
Qu'appele tu editeur ? A prioroi il te faut le crée toi meme a l'aide
de la commande script/generate migration add_comlumn_recipe par exemple.

Voila HTH
Ba00a402965da738f601b6367cf3224f?d=identicon&s=25 Bolo Michelin (Guest)
on 2006-04-19 14:39
(Received via mailing list)
D'accord:)

Alors j'ai créer mon fichier 002_add_column_recipe.rb

class AddColumnRecipe < ActiveRecord::Migration
  def self.up
      puts 'Ajouts de champs dans la table'
      add_column :description, :string
      add_colum :date, :datetime
  end

  def self.down
    puts 'suppressions des champs description et date'
    remove_column :description, :string
    remove_column :date, :datetime
  end
end

lorsque je tante la migration

rake migrate
(in /Users/bolomichelin/Documents/Creation_Perso/Developement/cookbook)
== AddColumnRecipe: migrating
=================================================
Ajouts de champs dans la table
-- add_column(:description, :string)
rake aborted!
wrong number of arguments (2 for 3)


J'ai essayé de vérifier les , et point ; mais je vois pas mon erreur
4d3c4ad293c983f47f3eab02796eafc7?d=identicon&s=25 unknown (Guest)
on 2006-04-19 14:42
(Received via mailing list)
Le 1er argument de add_column est le nom de la table.

Dans la doc sur migration :
http://api.rubyonrails.org/classes/ActiveRecord/Mi...
Ba00a402965da738f601b6367cf3224f?d=identicon&s=25 Bolo Michelin (Guest)
on 2006-04-19 15:01
(Received via mailing list)
Donc ca doit ressembler a ca ?

class AddColumnRecipe < ActiveRecord::Migration
  def self.up
      puts 'Ajouts de champs dans la table'
      add_column :recipes, :description, :string
      add_colum :recipes, :date, :datetime
  end

  def self.down
    puts 'suppressions des champs description et date'
    remove_column :accounts, :description, :string
    remove_column :accounts, :date, :datetime
  end
end

Le 19/04/06, sthibaudeau@sqli.com <sthibaudeau@sqli.com> a écrit :
Ba00a402965da738f601b6367cf3224f?d=identicon&s=25 Bolo Michelin (Guest)
on 2006-04-19 15:04
(Received via mailing list)
mes champs on bien été créer mais lorsque que je recharge la page

http://localhost:3002/recipes/new

je ne vois pas les "description" et "date"
2006/4/19, Bolo Michelin <malavoi@gmail.com>:
13ea48f056b19349027d2f4a6921a46a?d=identicon&s=25 Jean-François (Guest)
on 2006-04-19 15:04
(Received via mailing list)
Salut,

2006/4/19, Bolo Michelin <malavoi@gmail.com>:
>   def self.down
>     puts 'suppressions des champs description et date'
>     remove_column :accounts, :description, :string
>     remove_column :accounts, :date, :datetime
>   end
> end

L'opération inverse d'ajouter une colonne 'description' à la table
'recipes' n'est pas de supprimer la colonne 'description' de la table
'accounts'. Un peu de logique bon sang.

   -- Jean-François.
6d5a9515e78ed9e9f32aebb41c77cbdc?d=identicon&s=25 Mathieu Fosse (pointcom)
on 2006-04-19 15:10
(Received via mailing list)
Pour cela il faut relancer la commande :
./script/generate scaffold Recipe

et répondre 'yes' quand il demande d'écraser 'app/view/_form.rhtml'

Mathieu



On 4/19/06, Bolo Michelin <malavoi@gmail.com> wrote:
> > class AddColumnRecipe < ActiveRecord::Migration
> >
> > > Dans la doc sur migration :
> > > >       puts 'Ajouts de champs dans la table'
> > > >
> > > > -- add_column(:description, :string)
> > > > Railsfrance mailing list
> > >
>
>
--
Mathieu FOSSE
Ba00a402965da738f601b6367cf3224f?d=identicon&s=25 Bolo Michelin (Guest)
on 2006-04-19 15:14
(Received via mailing list)
L'opération inverse d'ajouter une colonne 'description' à la table
'recipes' n'est pas de supprimer la colonne 'description' de la table
'accounts'. Un peu de logique bon sang.

C'est juste un mauvais copier/coller ... ca n'empeche pas de créer les
champs suivants.
Je te rapelle que j'essaye de suivre un tuto
http://www.railsfrance.org/files/active/2/On_Lamp_...

Quoi qu'il en soit ... Normalement je devrais voir le descriptions et le
champs Date quand je rafraichie la page ?

Dois je regenérer le controlleur en faisant

scrip/generate scaffold recipes ?

Merci
2006/4/19, Jean-François <jf.web3@gmail.com>:
Ba00a402965da738f601b6367cf3224f?d=identicon&s=25 Bolo Michelin (Guest)
on 2006-04-19 15:26
(Received via mailing list)
merci

2006/4/19, Mathieu FOSSE <mathieu.fosse@gmail.com>:
Ba00a402965da738f601b6367cf3224f?d=identicon&s=25 Bolo Michelin (Guest)
on 2006-04-20 15:51
(Received via mailing list)
http://www.railsfrance.org/files/active/2/On_Lamp_...
41)
Je suis a la dernière partie du tuto. Dans cette partie on doit créer un
table categories. et ajouter une clé etrangère category_id a la tables
recipes.

j'ai donc ajouté un nouveau champs ainsi

class AddCategoryidRecipe < ActiveRecord::Migration
  def self.up
    puts ' ajout du champs category_id'
    add_column :recipes, :category_id, :int
  end

  def self.down
    puts 'supressions du champs category_id'
    remove_column :recipes, :category_id, :int
  end
end

Apres on donc indiquer aux classes recipes et catégories le lien entre
elle.
Dans le tuto on fait ainsi

class Category < ActiveRecord::Base
  has_many :recipes
end
class Recipes < ActiveRecord::Base
  belongs_to :category
end

Pour l'instant cava. Mais j'ai un petit sousic avec la modification de
la
page edit. on doit faire
Dans le répertoire c:\rails\cookbook\app\views\recipe, créez un fichier
que
vous nommerez
edit.rhtml contenant le patron HTML ci-dessous. C'est presque du HTML
standard, l'astuce
principale résidant dans les balises <select> et <option> qui créent la
liste déroulante des
catégories:

cette page est déja crée par le model ma page ne ressemble pas du tout a
ca
mais plus a ca
<h1>Editing recipes</h1>

<%= start_form_tag :action => 'update', :id => @recipes %>
  <%= render :partial => 'form' %>
  <%= submit_tag 'Edit' %>
<%= end_form_tag %>

<%= link_to 'Show', :action => 'show', :id => @recipes %> |
<%= link_to 'Back', :action => 'list' %>


Donc je pense que dans la premère partir du code Ror construit le
formulaire
avec un bouton "edit".
je pense que cette ligne <%= render :partial => 'form' %> gènere le
formulaire en fonction des champs de la talbles recipes

Si je veux ajouter un champs déroulant pour choisir la categorie de la
recette. Je fais comment dans le tuto ils ajoute celle ligne. mais la il
y a
un mélange de html et de ruby donc ca va pas marcher.

<select name="recipe[category_id]">
<% @categories.each do |category| %>
<option value="<%= category.id %>"
<%= ' selected' if category.id == @recipe.category_id %>>
<%= category.name %>
</option>
<% end %>
</select>

Martinique Sans Fil
http://www.martiniquesansfil.com
This topic is locked and can not be replied to.