Frederick C. wrote:
On Oct 18, 7:34ï¿½am, Greg W. [email protected]
Rails 2.3.2, MySQL 5.0.67, mysql-ruby 2.7, ruby 1.8.6
I am using AR.base.connection.execute to handle a particular case where
I want to avoid all AR callbacks and optimistic versioning.
When the code is run, the query statement, an update, makes no changes
to the intended record.
Does your code look like this :
m = Model.find(…)
Does it work if you paste it into script/console ?
If so I’d guess that Rails’ query cache is the problem. If so,
changing AR::Base.connection.execute to AR::Base.connection.update
would fix this
Thanks, I just needed some kind of comment to inspire me to try
something different, and it worked.
Your comments gave me an idea to try one thing. That one thing caused
the code to finally spit out an error. The error is what I suspected,
but had no way to prove, but now realize is obvious. Why the error shows
up after this change makes no sense to me, but nevertheless I know
what’s wrong now.
The model in question requires a specific named connection in order to
use a specific database (multi-db application). Of course, using
AR::Base.connection wasn’t using the correct db.
However, this code is in a general-purpose acts_as_pessimistic plugin
I’ve written (which does it better than the built-in way IMO), and I
don’t see any way it can know about the multi-db goings on, so I need to
solve the task a different way.
I need to avoid validation, so I can do that with save(false), and I
need to avoid changing lock_version if it exists. You gave me and idea
for the latter last year, so I’ll give that a go here too.