Помогите мне понять эту ошибку ActiveRecord, а также, пожалуйста, скажите мне правильный способ написать это.
У меня есть модель оплаты
class Payment < ApplicationRecord
enum status: %w(success, failed, initialized)
scope :successful, -> { where(status: :success) }
def self.find_total_amount_spent(user_id)
total_amount = 0
total_amount = self.where(user_id: user_id, status: :success).inject(0) {|amount, payment| amount + payment.amount }
return total_amount/100.0
end
end
В методе find_total_amount_spent
я хочу получить общую сумму, потраченную пользователем.
Но я получаю эту ошибку
ActiveRecord::StatementInvalid (PG::InvalidTextRepresentation: ERROR: invalid input syntax for integer: "success"
SELECT "payments".* FROM "payments" WHERE "payments"."user_id" = $1 AND "payments"."status" = $2):
Насколько я понимаю, эта ошибка заключается в том, что я не должен указывать символ :success
?
Но я использовал его в других частях моего приложения, где он работал. Более того, он также используется в enum doc
Это значит, что инжект ожидает, что каждое переданное ему значение будет целым числом? Да, это то, что я думал, основываясь на моем понимании инъекции отсюда
Так что, если инъекция не является правильным методом для использования здесь, не могли бы вы объяснить мне лучший подход и лучший способ прийти к решению?
Большое спасибо.