I am trying to upgrade my application from rails version from 4.2 to 5.2.8. Everything went well but one corner case I am getting error. I debug lot of things but I didn’t able to fix it properly. In the above image, I’ve switch tenant with some X value but while find the Customer model(single tenant) it uses some unknown Tenant value Y. I think it uses the Cache value. Please guide me if any one had any idea. I am extending the Active Record find method and then added some monkey patch on it.
Inside the find method, I am using the some cache statement. It cause the problem.
key = primary_key
s = cached_find_by_statement(key) { |params|
where(key => params.bind).limit(1)
}
record = s.execute([id], connection).first
1 Like
I had been wondering why this would be happening. Makes sense now!
Still, I am not able to find the Rails 5.2.8 equivalent statement for the above execute method calling without cached_find_by_statement.
Here, does anybody have idea about to run this statement without using cache.
statement = cached_find_by_statement(key) { |params|
where(key => params.bind).limit(1)
}
record = statement.execute([id], connection).first
Maybe try simply:
record = where(primary_key => id).limit(1).first
or in a WORST case scenario you can try:
record = find_by_sql(send(:sanitize_sql_array, ["SELECT * FROM #{table_name} WHERE #{primary_key} = ? LIMIT 1", [id]])).first