IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby on Rails Discussion :

Générer le SQL


Sujet :

Ruby on Rails

  1. #1
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut Générer le SQL
    Bonjour !

    Je suis un developpeur Python (notement Django) et je voullais voir ce que "Rails avais dans le ventre"

    Mais il y a des truc etrange je trouve ... rails genere ses fichier de model a partir d'une base de données, je trouve plus logique de programmer ses models et de les appliquer a la base de données... Il parrait que c'est faisable en Rails (je crois) mais je ne trouve pas de howto qui explique comment faire cette manoeuvre.

    Est ce que vous pourriez m'aider ?

    Merci

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 118
    Points : 137
    Points
    137
    Par défaut
    Je ne connais pas bien Rails, mais je ne crois pas que ce soit possible, car le modèle "généré" ne contient aucune mention explicite des champs de la table.
    Typiquement un modèle généré:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    class Personne < ActiveRecord::Base
    end
    L'accès aux attributs (p.e.x personne_id, nom, prenom...) est totalement dynamique. Tu ne peux pas générer de SQL avec çà...

    Voici un extrait du commentaire de activerecord/base.rb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      # Active Record objects don't specify their attributes directly, but rather infer them from the table definition with
      # which they're linked. Adding, removing, and changing attributes and their type is done directly in the database. Any change
      # is instantly reflected in the Active Record objects. The mapping that binds a given Active Record class to a certain
      # database table will happen automatically in most common cases, but can be overwritten for the uncommon ones.

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 91
    Points : 130
    Points
    130
    Par défaut
    Bonjour Anthyme,

    Tout dépend de ce que tu veux obtenir au final. Ruby On Rails (RoR) a été conçu pour qu'il y ait le moins de paramétrage à faire. Dans ce cadre, le composant (gem au sens ruby) Active Record permet un mapping automatique sans aucun paramétrage. Suivant cette logique, RoR se base sur le modèle de la base et une norme de nommage pour déduire le contenus des modèles.

    Cependant, Active Record offre de nombreuses fonctionnalités permettant de créer le modèle que l'on veut. Comme je ne sais pas ce que tu cherches, voici quelques URL qui devraient t'aider à répondre à tes questions :
    -> Active Record
    -> Association dans Active Record

    En espérant que ça t'aidera

  4. #4
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    Je me suis pet être mal exprimé.

    Je vais vous montrer ce que je fais en Django :

    - J'ecris mon fichier de modèles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    from django.db import models
     
    class New(models.Model):
        author = models.CharField(maxlength=32)
        title = models.CharField(maxlength=32)
        contents = models.TextField()
        date = models.DateTimeField(auto_now_add=True)
        hits = models.IntegerField(default=0)
     
    class Comment(models.Model):
        author = models.CharField(maxlength=32)
        date = models.DateTimeField(auto_now_add=True)
        contents = models.TextField()
        new = models.ForeignKey(New)
    - Ensuite je vas dans mon dossier de projet et je tape :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ python manage.py syncdb
    et ça me créé mes tables mes relation ...

    Est ce qu'on peut faire un truc comme ça en rails ?

    Merci !

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 118
    Points : 137
    Points
    137
    Par défaut
    Comme tu peux le constater avec l'exemple de modèle de mon précédent post, il n'y a pas d'équivalent puisqu'en Rails le modèle est dynamiquement généré selon la table.
    Par contre tu peux regarder du côté des migrations:
    http://steve.emxsoftware.com/RubyOnR...ions+Explained
    Tu peux facilement écrire des scripts en Ruby qui mettent à jour la base de données (mais pas en utilisant tes modèles ActiveRecord).

  6. #6
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    Oh c'est vraiment dommage

    Bon je vais regarder ce rake qui a l'air quand même assez puissant

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 32
    Points : 29
    Points
    29
    Par défaut
    si tu peux créer tes tables en fonction de ton modèle.

    La seul est que tu dois créer un fichier de migration

    voila dsl c est une reponse rapide pais tu devrais trouver sans trop de pb de la doc sur les migrations et rails

  8. #8
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Points : 785
    Points
    785
    Par défaut
    Sur le site de RubyOnRails dans la section Screencast, il y a deux fichiers QuickTime qui montre l'utilisation de la migration via ActiveRecord::Migration
    Nul ne peut mieux connaitre la connaissance qu'elle-même.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. générer script sql du MCD
    Par lahmar.abdel1 dans le forum PowerAMC
    Réponses: 2
    Dernier message: 15/03/2010, 14h34
  2. Générer code SQL table sybase
    Par jeandormesson dans le forum Sybase
    Réponses: 3
    Dernier message: 27/11/2008, 17h22
  3. Générer scripts SQL
    Par tedparker dans le forum Forms
    Réponses: 7
    Dernier message: 13/01/2007, 22h15
  4. comment générer le sql de la base
    Par Guitch dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 04/10/2004, 09h24
  5. Réponses: 2
    Dernier message: 26/02/2003, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo