Problème de modélisation


#1

Salut à tous,

Je suis en train de coder une petite appli qui permet aux membres d’un
équipe dev de saisir leurs jours de présence, ainsi que leurs prévisions
de
présence.
Il doit certainement exister des choses qui font ça très bien, mais en
fait
je veux que ça soit très simple et surtout c’est pour me faire la main
en
rails :slight_smile:

Bref, je ne sais pas très bien comment modéliser leur présence et leurs
prévisions.
J’aurais bien vu un modèle Attendance avec les champs suivant en base :

  • user_id
  • date
  • type (effective / expected)
  • am (boolean)
  • pm (boolean)

Je ne sais pas trop comment gérer le type … un integer serait plus
performant mais pas très causant quand on regarde en base, et une string
c’est l’inverse :slight_smile:

De plus j’ai le sentiment qu’on peut faire mieux. Je ne sais pas trop si
les
associations polymorphiques ne seraient pas pertinentes ni comment
procéder
dans ce cas.

Auriez vous des idées ?

Merci
Emmanuel


#2

Emmanuel B. wrote:

leurs prévisions.

De plus j’ai le sentiment qu’on peut faire mieux. Je ne sais pas trop
si les associations polymorphiques ne seraient pas pertinentes ni
comment procéder dans ce cas.

Auriez vous des idées ?
Pour gérer ce type, j’utiliserais du “Single Table Inheritance” (STI
pour les intimes). Ca te permettra un couche d’abstraction de ton type.
Dans le sens ou tu auras le Effective et le model Expected avec les
méthodes communes dans ton model Attendance. et les méthodes spécifiques
dans les models correspondant. Le tout dans la même table de BDD.


Cyril M.
http://blog.shingara.fr


#3

script/generate scaffold Attendance user_id:integer date:date

am:boolean pm:boolean

puis un fichier app/models/effective_attendance.rb

class EffectiveAttendance < Attendance
end

et app/models/expected_attendance.rb

class ExpectedAttendance < Attendance
end

2008/11/11 Emmanuel B. removed_email_address@domain.invalid:


#4

Ok merci à tous les deux :slight_smile:

Emmanuel

Le 12 novembre 2008 08:20, Gaspard B. removed_email_address@domain.invalid a écrit :