Adding an associated Table to an Existing Table (Book > Revision)

Hello, newbie here...

I have the following models:

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

I now want to add a BookRevision table, that has the following columns (id, user_id, version # (auto increment), diff (old book copy), timestamps)

Logic: 1. When a book is Created, a record is added to the BookRevision table, so we know who created the book in the first place 2. When a book is Updated, a record is added with the user_id (could be a different user), and a new version #, and the old book text, to serve as an archive.

Given that I have the Instance, User, Book table implement in my rails add, are these the correct steps to make the above come to life? 1. Add a migration for the BookRevision table....     rails generate migration AddTableBookRevision user_id:integer version:integer diff:text 2. Then update the models as follows:

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

Then in my controller, when adding a new book? Right now I have: @book = Book.create(params[:book].merge(:instance_id => current_user.instance_id)) How do I update that to account for the BookRevision association?

Thanks for helping me out!

you and to record every update or you overwrite when there is an update?

I want to add a revision record on every update to the book record.

Like how a wiki works. Every time the wiki is update it tracks a revision: http://upload.wikimedia.org/wikipedia/commons/4/41/Mediawiki-database-schema.png

see if this helps http://railscasts.com/episodes/177-model-versioning

Vestal Versions looks pretty impressive, only challenge is it doesn't seem to play nice with Rails 3.

"ActiveRecord::DangerousAttributeError: changes is defined by ActiveRecord" It uses a field in the model called changes. Not sure if there are plans to fix that or not.

To install Vestal Versions, after adding the gem you have to run: "script/generate vestal_versions" not sure if that's a Rails 3 command so I tried: "rails generate vestal_versions" which gave "Could not find generator vestal_versions"

I did check to make sure it was installed: $ bundle show vestal_versions /Users/me/Sites/cline/vestal_versions/ruby/1.8/gems/ vestal_versions-1.0.2

Any ideas on how to install Vestal Versions? thxs again!

Also tried:

rails g vestal_versions Could not find generator vestal_versions

Anyone out there able to get Vestal Versions working with Rails 3?

well im going to sleep now but ill check it out tomorrow