On 16 October 2014 20:14, Brian Sammon
<rubyonrails-list@brisammon.fastmail.fm> wrote:
> On Thu, 16 Oct 2014 19:58:52 +0100
> Colin Law <clanlaw@gmail.com> wrote:
>
>> On 15 October 2014 22:01, Brian Sammon
>> <rubyonrails-list@brisammon.fastmail.fm> wrote:
>> > All my tables/models have a "revision" field, and I have a
>> > before_update callback to increment the revision field.
>> >
>> > Among my tables are:
>> > events
>> > rooms
>> > events_rooms
>> >
>> > In my Event model, I have:
>> > has_many :eventRooms
>> > has_many(:rooms, :through => :eventRooms)
>> >
>> > When I create an event, assign a room or two, and then save, the
>> > "events_rooms" table entry is initially created with a revision of 1,
>> > and then (immediately, automatically, and inexplicably) updated to hav
>> > a revision of 2. I do not want every new record to have a revision
>> > number of 2. The revision 2 version is identical to revision 1 (which
>> > it replaces), aside from the revision number.
>> >
>> > I can reproduce this in the rails console with the following:
>> > event = Event.new({'name' => 'Meeting 5'})
>> > event.rooms << Room.find(['1', '2'])
>> > event.save
>> >
>> > Does anyone have any idea why this could be happening or where I shoul
>> > look for further troubleshooting?
>>
>> Just to be clear you are saying that the above code invokes
>> before_update once where you would not expect it to be called at all?
>> If so is it invoked by the save or does it get called when the room is
>> added?
>>
>> Does it save it twice?
>
> it does a sql INSERT followed by a sql UPDATE (both) after "event.save".
Strictly it will be during event.save call (before the UPDATE).
Presumably it is adding the room that is triggering the problem. It
does look like a bug to me. Do you know whether it happened with
earlier versions of Rails? If not then almost certainly a bug.
Colin
--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/CAL%3D0gLvkpbZo25CezDAMCCsG5gZVFes4wahHUCZDQvWm4s8n4Q%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment