je les modèles suivants:Ajout d'une table associée à une table (Livre> Révision)
class Instance < ActiveRecord::Base
has_many :users
has_many :books
end
class User < ActiveRecord::Base
belongs_to :instance
end
class Book < ActiveRecord::Base
belongs_to :instance
end
Je veux maintenant ajouter une table de BookRevision, qui a les colonnes suivantes (id, user_id version # (incrément automatique), diff (ancienne copie du livre), horodatages) Logic:
- Lorsqu'un livre est créé, un enregistrement est ajouté à la table BookRevision, donc nous savons qui a créé le livre le premier lieu
- Quand un livre est mis à jour, un enregistrement est ajouté à la user_id (pourrait être un autre utilisateur), et une nouvelle version
, et l'ancien texte du livre, pour servir d'archives.
Étant donné que je l'instance, l'utilisateur, table de livre dans mes rails mettre en œuvre ajoutent, sont ces étapes pour faire corriger ce qui précède viennent à la vie? - Ajouter une migration pour la table BookRevision .... rails génèrent la migration AddTableBookRevision user_id: entier Version: integer diff: texte - Puis mettre à jour les modèles suivants:
class Instance < ActiveRecord::Base
has_many :users
has_many :books
end
class User < ActiveRecord::Base
belongs_to :instance
end
class Book < ActiveRecord::Base
belongs_to :instance
has_many :BookRevisions
end
class BookRevision < ActiveRecord::Base
belongs_to :Book
end
Puis, dans mon contrôleur, lorsque ajouter un nouveau livre? En ce moment j'ai:
@book = Book.create(params[:book].merge(:instance_id =>
current_user.instance_id))
Comment mettre à jour cela pour tenir compte de l'association BookRevision? Merci de votre aide!