簡體   English   中英

Ruby on Rails-將參數存儲到數據庫

[英]Ruby on Rails - Store params to database

我有一個來自POST請求的哈希參數(這是一個ActionController::Parameters ):

{"mc_gross"=>"1.00", "invoice"=>"28", "protection_eligibility"=>"Eligible", "address_status"=>"unconfirmed", "payer_id"=>"FSXBUQDGG6KWN", "tax"=>"0.00", "address_street"=>"Av. de la Pelouse, 87648672 Mayet", "payment_date"=>"14:46:27 Oct 27, 2014 PDT", "payment_status"=>"Completed", "charset"=>"windows-1252", "address_zip"=>"75002", "first_name"=>"St\xE9phane", "mc_fee"=>"0.34", "address_country_code"=>"FR", "address_name"=>"St\xE9phane XXX", "notify_version"=>"3.8", "custom"=>"", "payer_status"=>"verified", "business"=>"stephaneXXXX@gmail.com", "address_country"=>"France", "address_city"=>"Paris", "quantity"=>"1", "verify_sign"=>"AumOxKSV7Re473t76kESkdv3agufAX.VzyW2dEiO-ul3gPNvbfQLzqXq", "payer_email"=>"zXXXXXXX@k.com", "txn_id"=>"8MB257669F3772042", "payment_type"=>"instant", "last_name"=>"XXXX", "address_state"=>"Alsace", "receiver_email"=>"stephaneXXXXXX@gmail.com", "payment_fee"=>"0.34", "receiver_id"=>"ZNER97N82WKY2", "txn_type"=>"web_accept", "item_name"=>"XXXX", "mc_currency"=>"USD", "item_number"=>"1", "residence_country"=>"FR", "test_ipn"=>"1", "handling_amount"=>"0.00", "transaction_subject"=>"", "payment_gross"=>"1.00", "shipping"=>"0.00", "ipn_track_id"=>"5db890c138b56", "controller"=>"purchases", "action"=>"hook"}

我想將其保存在數據庫中。 最好的方法是什么?

我嘗試使用params.inspect將其轉換為String,但是它不起作用,我也嘗試了serialize(params)但也失敗了。 我的列是t.text,當我執行@purchase.update_attributes my_column: params時,出現錯誤: ArgumentError (invalid byte sequence in UTF-8)

謝謝

經過多次嘗試均未成功,我決定繞過此問題。 由於按數據庫字段是一個文本列,因此我要做的是創建一個包含所有參數的字符串。 之后,我能夠將String存儲到我的文本字段數據庫列中。

parameters = String.new
params.each do |key, value|
  parameters += key + " = " + value + " | "
end

您是否嘗試過使用Rails序列化

#in your model
class Purchase < ActiveRecord::Base
  serialize :my_column
end

#in controller
def myaction
  #...
  @purchase.my_column = my_params
  @purchase.save
end

St \\ xE9phane中的\\ xE9是U + 00E9的Unicode字符。 您需要將其替換為“ e”。

2.1.0 :010 > a="St\xE9phane"
=> "St\xE9phane" 
2.1.0 :011 > a.scrub!('e')
=> "Stephane"

或者您可以配置數據庫以在mysql中使用unicode 存儲unicode

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM