Rails version - 126.96.36.199
I have one table subscription_attempts and it has one column
attempt_token which is unique random token for each record and it is generated based on rails’s has_secure_token.
I have one method which will try to find record based on attempt_token or id. Below is the method code
def random_method(value) find_by(id: value) || find_by(attempt_token: value) end
It was working all fine until I got one attempt_token which is starting with a digit. Here is that attempt_token value -
When I use that method it is giving me SubscriptionAttempt record with id 5. I have also tried
where and the result is the same.
When i tried below code
SubscriptionAttempt.find_by('id = ?', '5HqBToVVbFVL4T6TLzuuKju8')
i am getting this exception
ActiveRecord::StatementInvalid (PG::InvalidTextRepresentation: ERROR: invalid input syntax for type bigint: "5HqBToVVbFVL4T6TLzuuKju8") LINE 1: ...empts".* FROM "subscription_attempts" WHERE (id = '5HqBToVVb...
I am assuming this is not how these methods should behave. It should give a
nil result if the value is not matching with database value. Can someone please give me the solution to this problem?