Shouldn’t update_all be updating lock_version? As you can see from my
console session below, it is upating the record (changed running
attribute to true and returned 1 to show 1 recored was updated). But it
did not increment lock_version. And optimistic locking is working
correctly otherwise. As you can see below, lock version = 562 before
and after the update_all call but it is incremented to 563 when I save()
the object.
Am I missing something here?
Thanks, Don
jobs = Job.find(:all, :conditions => [‘id = 10’])
=> [#<Job:0xb73f9ea4 @attributes={“status”=>“1”, “server_id”=>nil,
“running”=>“0”, “poller_id”=>“10”, “lock_version”=>“562”,
“response_time”=>“8”, “id”=>“10”, “next_run_at”=>“2006-07-06 13:43:33”,
“last_run_at”=>“2006-07-06 13:42:33”, “late”=>“0.532686”}>]puts jobs[0].running, jobs[0].lock_version
false
562
=> nilJob.update_all([‘running = ?’, true], [‘id in (?)’, jobs.map { |j| j.id}])
=> 1jobs = Job.find(:all, :conditions => [‘id = 10’])
=> [#<Job:0xb73e835c @attributes={“status”=>“1”, “server_id”=>nil,
“running”=>“1”, “poller_id”=>“10”, “lock_version”=>“562”,
“response_time”=>“8”, “id”=>“10”, “next_run_at”=>“2006-07-06 13:43:33”,
“last_run_at”=>“2006-07-06 13:42:33”, “late”=>“0.532686”}>]puts jobs[0].running, jobs[0].lock_version
true
562
=> nilj = Job.find(10)
=> #<Job:0xb73e2cb8 @attributes={“status”=>“1”, “server_id”=>nil,
“running”=>“1”, “poller_id”=>“10”, “lock_version”=>“562”,
“response_time”=>“8”, “id”=>“10”, “next_run_at”=>“2006-07-06 13:43:33”,
“last_run_at”=>“2006-07-06 13:42:33”, “late”=>“0.532686”}>j.running = false
=> falsej.save
=> truej
=> #<Job:0xb73e2cb8 @attributes={“status”=>“1”, “server_id”=>nil,
“running”=>false, “poller_id”=>“10”, “lock_version”=>563,
“response_time”=>“8”, “id”=>“10”, “next_run_at”=>“2006-07-06 13:43:33”,
“last_run_at”=>“2006-07-06 13:42:33”, “late”=>“0.532686”},
@errors=#<ActiveRecord::Errors:0xb73dfe8c @base=#<Job:0xb73e2cb8 …>,
@errors={}>>j.reload
=> #<Job:0xb73e2cb8 @server=nil, @attributes={“status”=>“1”,
“server_id”=>nil, “running”=>“0”, “poller_id”=>“10”,
“lock_version”=>“563”, “response_time”=>“8”, “id”=>“10”,
“next_run_at”=>“2006-07-06 13:43:33”, “last_run_at”=>“2006-07-06
13:42:33”, “late”=>“0.532686”}, @poller=nil,
@errors=#<ActiveRecord::Errors:0xb73dfe8c @base=#<Job:0xb73e2cb8 …>,
@errors={}>>