On 3/6/06, Chinmay Kulkarni <f2005388@bits-pilani.ac.in>
wrote:> Hi!
>
> I''m new to Rails (and ruby in general). I was planning to
implement a
> whiteboard like system, in which changes made by users to the board are
> automatically tracked.
> Currently, I''ve implemented it as a model Post which :has_many
Boards. A
> new Board is added to the Post every time a change is submitted (with a
> created_at timestamp). This allows saving multiple versions of the
> board, but has the drawback that:
> a) The board is replicated even if there is only a marginal change.
> b) There is no easy way (I know) to diff two versions.
>
> Would be very grateful it anyone could help me out with some better
> model or point me in the right direction.
>
> Yours,
> Chinmay
You can try installing my acts_as_versioned plugin:
http://ar-versioned.rubyforge.org (Use the plugin version instead of
the gem).
The Rails Recipe book has a great intro recipe on how to use it too.
It still saves revisions for small changes, but you can specify which
fields to check with:
class Post < AR::Base
acts_as_versioned :if_changed => [:title, :body]
end
You can also save without a revision:
@post.save_without_revision
Diffing isn''t included, but you can look at the i2 source to see how
the Rails Wiki handles it:
http://dev.rubyonrails.org/svn/tools/i2/trunk
--
Rick Olson
http://techno-weenie.net