0

我正在設置條帶連接與從https://github.com/rfunduk/rails-stripe-connect-example的例子,我遇到了一個問題,使用序列化來存儲stripe_account_status應存儲爲一個數組。Rails序列化沒有正確存儲

這是怎麼回事應該存儲(從上面的例子鏈接生成)

enter image description here

{"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} 

這是怎麼我的應用程序收藏起來

enter image description here

{: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 

謝謝,我真的很感激任何方向,你可以點我!

回答

1

當您要求Rails序列化模型上的屬性時,它將默認將對象存儲爲YAML字符串。

你可以問Rails的序列化不同,因爲你已經提供一類做系列化如

serialize :stripe_account_status, JSON

爲什麼當你添加這種不正常的原因,發現是因爲你想必在使用YAML的數據庫中已經有記錄,因此從數據庫讀取數據時,Rails無法將其解析爲有效的JSON字符串。如果只是您不需要的開發數據,您可以刪除記錄然後使用JSON,否則您需要將當前的YAML字符串轉換爲JSON。

在解析數據庫中的序列化字符串時,Rails也將象徵着散列的鍵。這是你問題中哈希之間的唯一區別,在實踐中應該不重要。如果你出於某種原因需要String鍵,你可以在Rails提供的哈希上使用#stringify_keys方法。