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 :

Relation n:n, vues et session


Sujet :

Ruby on Rails

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 121
    Points : 92
    Points
    92
    Par défaut Relation n:n, vues et session
    Bonjour à tous!

    Je travaille sur une application à propos de sites géographiques.
    J'ai une table sites(id,name, story,size ...) une table owners(id, mainname, firstname, address1 ...) et une table de jointure owners_sites(owner_id, site_id).
    J'ai dejà réussi à obtenir des vues pour des tables en relation n:n et à correctement alimenter ces 3 tables en mettant un collection_select dans une vue. Mais ce n'est pas terrible car ça impose par exemple à l'utilisateur de sélectionner un site dans une combobox lorsqu'un nouvel owner est créé. Je voudrai maintenant proposer à l'utilisateur de :
    1. Créer un nouveau site.
    2. Proposer un lien sur cette vue d'un site créé permettant de basculer vers la vue de création d'un owner associé.
    3. Lorsque la création d'un nouvel owner est validée alimenter correctement la table owner et la table de jointure.

    Aucun problème pour les étapes 1 et 2. Pour l'étape 3, j'ai essayé en utilisant la variable session où je stocke temporairement les infos sur le site sélectionné mais je n'ai sait quoi faire après.
    Comment faire pour correctement alimenter la table de jointure avec cette information et l'id du nouvel owner créé?


    Merci de votre aide.

  2. #2
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Bonjour

    J'ai du mal à voir à quel moment tu bloques...

    Voici un petit exemple vite fait :

    users => id, name / has_and_belongs_to_many :clubs
    clubs => id, name / has_and_belongs_to_many :users
    clubs_users=> user_id, club_id

    et un petit tour en console :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    riri = User.create :name=>"riri"
    fifi = User.create :name=>"fifi"
    loulou = User.create :name=>"loulou"
    club_castors = Club.create :name=>"Castors Juniors"
    club_scrabble = Club.create :name=>"Scrabble"
    club_dames = Club.create :name=>"Dames"
     
    riri.clubs # => []
    riri.clubs << club_castors
    riri.clubs << club_scrabble
    fifi.clubs << club_castors
    loulou.clubs << club_castors
    loulou.clubs << club_dames
     
    riri.clubs # => [club_castors, club_scrabble]
     
    club_scrabble.users # => [riri, fifi, loulou]
    club_dames.users # => [loulou]
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 121
    Points : 92
    Points
    92
    Par défaut
    Ah ben oui.
    Il me manquait un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @owner.sites << session[:site]
    Merci titoumimi!

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 63
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    J'avais une petite question supplémentaire... Si la table club_users comprenait un champ "status" par exemple (qui donnerait le statut de la personne dans le club), comment pourrait-on y accéder?

    Par exemple si je veux pour un user tous les clubs pour lesquels "status" = "membre"?

    Est-ce qu'il faut que je change mes "relations" has_and_belongs_to_many comme ils font ici http://wiki.rubyonrails.org/rails/pa...ghAssociations? Je ne comprends pas très bien...

    Si quelqu'un peut m'aider...

  5. #5
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    à partir du moment où tu stoques des informations supplémentaires dans ta table d'association, il faut que tu passe pas has_many :through, et que tu créer un vrai modèle pour ta table d'association
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 63
    Points : 49
    Points
    49
    Par défaut
    Ok... J'ai un peu de ml à m'en sortir... Est-ce que tu pourrais m'en dire un peu plus?

    Si on reprend l'exemple ci-dessous je vais donc mettre:
    * dans user.rb
    has_many :clubs_users
    has_many :clubs, :through => :clubs_users
    * dans club.rb
    has_many :clubs_users
    has_many :users, :through => :clubs_users

    Ensuite je vais donc créer un model pour clubs_users et y mettre:*
    belongs_to :clubs
    belongs_to :users

    Est-ce bien ça?

    Mais la table clubs_users doit-elle changer (le champ "status" étant déjà présent)? J'ai déjà un ID mais que j'ai appelé id_cu par exemple... est-ce que je dois le changer en id ou bien même l'enlever?

    Une dernière question... Comment récupérer pour un user tous les clubs pour lesquels "status" = "membre"? Je me fais des noeuds et n'arrive pas à trouver la syntaxe correcte...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/05/2012, 10h35
  2. [8i] Relation entre processes et sessions
    Par apersonnat dans le forum Administration
    Réponses: 3
    Dernier message: 17/09/2008, 17h37
  3. PL/SQL : vue v$session
    Par madina dans le forum PL/SQL
    Réponses: 1
    Dernier message: 31/05/2006, 10h14
  4. Nb d ' utilisteurs connectés et vue v$session
    Par ducho dans le forum Administration
    Réponses: 23
    Dernier message: 17/02/2004, 09h24

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