Ruby Forum Rails France > Création de contraintes et relations sur d es tables via rails

Posted by Shmii (Guest)
on 26.03.2008 12:54
(Received via mailing list)
Bonjour,

Je suis débutant en Rails et je souhaiterais un peut d’aide.

Je souhaiterais crée une base de donne avec des contrainte de type «
foreign key » (base de donnée en PostgeSql)
Je souhaiterais crée intégralement ma base de donnée avec rails. Via «
migrate » ou autre si ce n’est pas la meilleur methode.
Mais aussi que les contraintes on « delet » et « cascade » soit
fonctionnel
En gros savoir comment intégrer les contraintes et relation a mes
tables et comment gérer tous ca avec ruby Rails.


Donc deux tables : livre et auteur

Les relations :
- un auteur plusieurs livres
- un livre un auteur

Avec une contrainte de type « foreign key » sur les id de ces deux
tables donc.



Mon fichier de création via migrat :

create_table "livres", :force => true do |t|
    t.column "nom", :text
    t.column "auteur", :integer
  end

  create_table "auteurs", :force => true do |t|
    t.column "nom", :text
    t.column "prénom", :text
  end




Si vous avez des liens vers des documentations  je suis preneur.

1er question :
Est-ce faisable en Rails, ou doit t’on crée à la main tous ou partis…

2eme question
Je voudrais donc savoir si c’est faisable quel serais la méthode pour
faire cela via Rails

3eme question
Rails gère t’il les contrainte ?
Je m’explique en gros deux fontion rails

La 1er delete_auteur : supprimera l’auteur de la bdd mais ne devra
fonctionner que si aucun livres n’est actuellement écrit par cette
auteur dans la bdd …
Comment est ce géré en Rails doit t’on écrire nous même les fonctions
de vérification.

La 2eme force_delete_auteur : supprimera l’auteur de la bdd et donc
devra supprimer tous les livres liée a cette auteur qui existerais
encore. Le cascad delet en sql
Comment est ce gere en Rails doit t’on ecrire nous meme les fonction
et request de supretion.
Posted by Cyril Mougel (shingara)
on 26.03.2008 14:09
(Received via mailing list)
2008/3/26 Shmii <thomaschalmel@gmail.com>:
>

>  1er question :
>  Est-ce faisable en Rails, ou doit t'on cre  la main tous ou partis...

Tout n'est pas compltement rellement faisable, car ca dpend un peu
des BDD tout ca. Les contraintes ne sont pas support  100% par
toutes les BDD.

>
>  2eme question
>  Je voudrais donc savoir si c'est faisable quel serais la mthode pour
>  faire cela via Rails

Tu peux mais avec le plugin :
http://www.redhillonrails.org/foreign_key_associations.html

>
>  3eme question
>  Rails gre t'il les contrainte ?

Pour la gestion des contraintes au niveau BDD, il faut utiliser un
plugin ou alors les crire en SQL pur et loader ca par le schema.sql

>  encore. Le cascad delet en sql
>  Comment est ce gere en Rails doit t'on ecrire nous meme les fonction
>  et request de supretion.

Ce genre de contrainte peut tout  fait tre grer au niveau
applicatif par Rails. Voir la doc.

--
Cyril Mougel
http://blog.shingara.fr