acts_as_versioned is pretty awesome..but it lacks documentation regarding how it interacts with optimistic locking.
If you have a column named lock_version, then ActiveRecord will use optimistic locking. (yay!) But it also means that acts_as_versioned will not automatically create the version column that it uses, nor will it use it even if you create it yourself. Instead, you need to tell it to use the lock_version column instead:
class Message < ActiveRecord::Base
validates_uniqueness_of :register_name
acts_as_versioned :version_column => :lock_version
end