【问题标题】:How to fix StatementInvalid error with Stripe如何使用 Stripe 修复 StatementInvalid 错误
【发布时间】:2019-03-23 02:07:42
【问题描述】:

我正在使用 Stripe 开发支付系统。 收到条带 webhook 后,我必须搜索客户。但是会出现下面这个错误。


ActiveRecord::StatementInvalid (SQLite3::SQLException: "'cus_xxxxx'" 附近: 语法错误: SELECT "users".* FROM "users" WHERE (stripe_customer_id 'cus_xxxxx') ORDER BY "users"."id" ASC限制?):


存在cus_xxxxx 的客户。但我必须从中删除单引号......

@user = User.where('stripe_customer_id ?', "#{source['customer'].gsub("'", "")}").first

我试过这样。但这行不通。

【问题讨论】:

    标签: ruby-on-rails stripe-payments


    【解决方案1】:

    您的问题是您没有在查询中使用运算符。例如:stripe_customer_id = ?stripe_customer_id IN (?)。但是有一个更好的方法来写这个。

    @user = User.find_by({
      stripe_customer_id: source['customer'].delete("'")
    })
    

    find_by 采用与where 类似的参数,但返回第一条记录。此外,哈希语法会根据提供的值自动在=INIS NULL 之间进行选择。

    此外,您可以使用delete 方法删除字符串中所有出现的字符串。基准测试表明它比 gsub 更快。对我来说很奇怪,您需要像这样修改字符串。如果有额外的引号,我觉得提交 source 的任何内容都是错误的。

    【讨论】:

    • 完美!非常感谢,我做到了。
    猜你喜欢
    • 2020-02-05
    • 2022-01-18
    • 2012-07-02
    • 2019-08-27
    • 1970-01-01
    • 2019-02-22
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多