Voilà un cas intéressant qui n'est pas (ou peu mentionné) sur la toile.

Un objet "document"
Un administrateur se connecte, le modifie.

On veut avoir le suivit des modification et quel administrateur a modifié l'objet document.

Un schéma simplifié qui me parait correct :
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
20
21
22
23
24
25
26
27
28
Document:
  actAs:
    Timestampable: ~
    Sluggable: { fields: [name] }
  columns:
    id:             { type: integer, notnull: true, primary: true, autoincrement:true }
    ref:            { type: string(40) }
    name:         { type: string(140) }
    article:        { type: clob }
 
Modification:
  actAs:
    Timestampable: ~
  columns:
    id:             { type: integer, notnull: true, primary: true, autoincrement:true }
    description:    { type: string(140) }
    document_id:    { type: integer }
    user_id:        { type: integer }
  relations:
    Document: { onDelete: CASCADE, local: document_id, foreign: id, foreignAlias: Modifications }
    User:
      class: sfGuardUser
      foreign: id
      local: user_id
      type: one
      onDelete: cascade
      foreignType: one
      foreignAlias: Profile
Quelle est la bonne stratégie pour ceci ? Y a-t-il quelque chose de prévu à la base ?

Ma première idée est d'utiliser un embed form pour les modifications et de réécrire l'executeCreate autogénéré de l'administration pour voir qui a modifié le document.

Mais cela me parait un peu bordélique.