誰かが以下のコードを理解するのを手伝ってくれますか?
def self.with_optimistic_lock(attrs)
begin
payment = where(attrs).first_or_create
yield(payment)
payment.save!
rescue ActiveRecord::StaleObjectError, ActiveRecord::StatementInvalid, ActiveRecord::RecordInvalid => e
retry
end
end
attrsパラメータのハッシュはどこにありますか。Postから継承するクラスActiveRecord::Baseです。
これはhttps://github.com/fantgeass/rails-test-tasks/blob/master/app/models/payment.rbのコード スニペットです。