我正在使用https://github.com/rfunduk/rails-stripe-connect-example中的示例设置条带连接,并且使用序列化来存储stripe_account_status
时遇到问题,应该将其存储为数组。
这是应该的存储方式(从上面的示例链接生成)
{"details_submitted"=>false, "charges_enabled"=>true, "transfers_enabled"=>false, "fields_needed"=>["legal_entity.first_name", "legal_entity.last_name", "legal_entity.dob.day", "legal_entity.dob.month", "legal_entity.dob.year", "legal_entity.address.line1", "legal_entity.address.city", "legal_entity.address.postal_code", "bank_account"], "due_by"=>nil}
这就是我的应用程序存储它
的方式
{:details_submitted=>false, :charges_enabled=>true, :transfers_enabled=>false, :fields_needed=>["legal_entity.first_name", "legal_entity.last_name", "legal_entity.dob.day", "legal_entity.dob.month", "legal_entity.dob.year", "legal_entity.address.line1", "legal_entity.address.city", "legal_entity.address.postal_code", "bank_account"], :due_by=>nil}
就我而言,一切都是相同的。唯一的区别是第一个例子使用
serialize :stripe_account_status, JSON
我的应用只有
serialize :stripe_account_status
这样做的原因是当我添加 JSON 时出现此错误:
JSON::ParserError - 795: unexpected token at '':
我已经尝试找出JSON错误,包括更改config / initializers / cookies_serializer.rb以使用:hybrid ,但这给了我同样的错误。
有人能指出我正确的方向解决JSON问题或找到一种方法来确保stripe_account_status
正确存储为数组。
以下是用于存储数组的方法:
if @account
user.update_attributes(
currency: @account.default_currency,
stripe_account_type: 'managed',
stripe_user_id: @account.id,
secret_key: @account.keys.secret,
publishable_key: @account.keys.publishable,
stripe_account_status: account_status
)
end
def account_status
{
details_submitted: account.details_submitted,
charges_enabled: account.charges_enabled,
transfers_enabled: account.transfers_enabled,
fields_needed: account.verification.fields_needed,
due_by: account.verification.due_by
}
end
谢谢,我非常感谢你指点我的方向!
答案 0 :(得分:1)
当您要求Rails序列化模型上的属性时,它将默认将对象存储为YAML字符串。
你可以要求Rails以不同的方式序列化,正如你已经注意到提供了一个类来进行序列化,例如
action: (itm:IActionItem)=> this.search(itm:IActionItem),
添加它时这不起作用的原因是因为您可能已经使用YAML在数据库中有一条记录,因此当从DB读取时,Rails无法将其解析为有效的JSON字符串。如果它只是您不需要的开发数据,则可以删除记录然后使用JSON,否则您需要将当前的YAML字符串转换为JSON。
Rails还会在解析数据库中的序列化字符串时对哈希的键进行符号化。这是你问题中哈希之间的唯一区别,在实践中无关紧要。如果由于某种原因需要String键,可以在Rails提供的哈希上使用serialize :stripe_account_status, JSON
方法。