0 votes

Mappage des colonnes des bases de données existantes dans un projet rails

Nous sommes en train de créer une application rails pour une base de données déjà existante. Nous avons besoin de mettre en correspondance certaines tables de la base de données.

Supposons que nous ayons trois tables : event, event_groups et event_to_groups.
Il y a des événements, il y a des groupes, et chaque événement peut être affecté à un ou plusieurs groupes.

Comment modéliser cette relation dans les rails ?

eg :

Tableaux existants :

event
    ID      name
    --------------------
    3       dinner
    4       sport
    5       anniversary
    6       birthday

event\_groups
    ID      name
    --------------------
    1       work
    2       friends
    3       family

event\_to\_groups
    event\_id    event\_groups
    --------------------
    3           2
    3           3
    4           1
    4           2
    4           3
    5           3
    6           2
    class Events < ActiveRecord::Base
  set\_table\_name 'events'
end
    class Groups < ActiveRecord::Base
  set\_table\_name 'groups'
end
    class EventToGroups < ActiveRecord::Base
  set\_table\_name 'event\_to\_groups'
end

Comment puis-je récupérer les noms de groupes appartenant à un événement à partir du modèle d'événement ? Merci.

1voto

PreciousBodilyFluids Points 7256

Quelques précisions - tout d'abord, le modèle ActiveRecord devrait être au singulier et non au pluriel. De plus, je suppose que vous vouliez dire que la table pour le modèle de groupe est 'event_groups', et non 'groups' ?

Essayez ça :

class Event < ActiveRecord::Base
  set_table_name 'events'
  has_many :event_to_groups
  has_many :groups, :through => :event_to_groups
end

class Group < ActiveRecord::Base
  set_table_name 'event_groups'
  has_many :event_to_groups
  has_many :events, :through => :event_to_groups
end

class EventToGroup < ActiveRecord::Base
  set_table_name 'event_to_groups'
  belongs_to :event
  belongs_to :group, :foreign_key => 'event_groups'
end

Je choisirais également un nom de modèle plus descriptif que "EventToGroup" (peut-être "Attendee" ou autre), mais c'est à vous de voir.

Cela devrait le faire - ensuite vous pouvez faire quelque chose comme :

@event = Event.find(5)
@groups = event.groups

Edit : Ack, ces relations devraient être has_many, pas juste many. J'ai trop utilisé MongoMapper.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X