2009-08-11 8 views
1

Attention, je suis nouveau sur ruby ​​on rails. Je sais que ma base de données n'est pas très bien installée, mais nous venons d'une base de données distante et stockons les informations de cette base de données.Aidez-moi à comprendre les rubis sur les rails

utilisateurs:
- id
- ...

stations
- id
- user_id
- hex_key (unique)
- ...

appels
- id
- signalé par (clé hexadécimale provenant des stations)
- ID source de données (base de données à distance)

détails de l'appel
- id
- call_index (id source de données d'appels)

réponses
- id
- call_index (id source de données d'appels)
- response_id (à partir de la base de données à distance)

détails de réponse
- ID
- response_index (response_id des réponses)

En ce qui concerne les modèles vont (ce qui est tout ce que j'ai terminé à ce jour) Je pense que c'est aussi mon plus gros problème:

utilisateur

a de nombreuses stations, les appels à travers des stations et des rapports par le biais des appels
stations a de nombreux appels
appels a beaucoup de réponses et appartient aux stations
réponse appartient à un appel

J'ai essayé de comprendre cela, mais comment puis-je modéliser ce si je peux obtenir tout de les utilisateurs correctement. quelque chose comme ceci:
@ user.responses.find (: tous)
et cela donnerait toutes les réponses pour cet utilisateur

Répondre

0

Basé sur le schéma de base de données et la description ici vos modèles ressemblerait à quelque chose comme:

classe utilisateur < ActiveRecord :: Base has_many: stations fin

classe station < ActiveRecord: : Base appartient à: utilisateur has_many: appels,: foreign_key => "signalé par" fin

classe Appel < ActiveRecord :: Base has_many: CALL_DETAILS,: foreign_key => "call_index" fin

La difficulté est que le schéma de base de données ne sont pas exactement ce que Rails attend par défaut (la convention). Vous devrez également probablement spécifier la clé primaire pour les tables si elles n'utilisent pas l'ID.

En outre, je ne suis pas sûr que vous serez en mesure de construire @ user.responses parce que les réponses appartiennent à des appels, et les appels appartiennent à des stations, et les stations appartiennent à des utilisateurs. C'est effectivement @ user.stations.calls.responses.

Questions connexes