I'm working on doing some versioning on a sequel model. It's simple enough
to do something like: `Model.one_to_many :versions` and then use an
`after_save` hook to create a version which serializes the state of the
model.
However, I'm interested in adding some optional field on the version table,
like user (who made the changes) and notes (why the changes were made). I'd
love to create a simple syntax for accessing these fields that exist on the
version table and not the original model, something like:
a_model.update({name: "foo", amount: 123}) do |version|
version.user = current_user
version.note = "Updated model amount for some reason"
end
In the example above the idea is the model version will be created
regardless, but if a block is given the not yet saved version is yielded to
the block so the caller can access it (to add change notes etc).
I've been able to make something like this work by overriding `save` and
`update`, but it's not dry, and it doesn't seem like this would cover all
the ways you can save a model (e.g. `update_all`). Meanwhile doing this via
a hook doesn't seem viable as I see no way to forward the optional block
from the various save-triggering methods.
Any suggestions? Is there a standardized or better approach to implementing
versioning using sequel?
Thanks!
Andrew
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.