我正在使用Ruby 2.3.0 & rails 4.2.6。我有一個在PARAMS哈希嵌套數組中的哈希,當我把它寫到一個文件當rails中的object.to_yaml(YAML)在ruby中時,可以刪除「!ruby/hash:ActionController :: Parameters」嗎?
hash = {"abc"=> [{"abc1"=>[{"key1" => value1},{"key2" => value2}]}]}
File.open("abc.yaml",'w+') {|f| f.write hash.to_yaml(:indentation => 8) }
abc.yaml
---
abc:
- !ruby/hash-with-ivars:ActionController::Parameters
elements:
abc1: &2
- !ruby/hash-with-ivars:ActionController::Parameters
elements:
key1: value1
key2: value2
ivars:
:@permitted: false
- !ruby/hash-with-ivars:ActionController::Parameters
elements:
key1: value1
key2: value2
ivars:
:@permitted: false
ivars:
:@permitted: false
:@converted_arrays: !ruby/object:Set
hash:
*2: true
它提到here 這是因爲序列化散列功能with-ivars在其2.0.9版本中加入了這個心靈寶石。這個心靈寶石現在是Ruby標準庫的一部分,它的這個特定版本已經添加到stdlib 2.3.0 preview1版本中。
但我想通過不添加任何其他額外的參數保持yaml文件清潔。如何刪除!ruby/hash-with-ivars:ActionController ::參數,元素和ivars在寫入文件時?
如何'hash'樣子? –
您必須至少提供Rails版本和「hash」類型。它看起來分別是'4.x'和'ActionController :: Parameters'。所以要得到簡單的yaml,你應該先得到純哈希!使用類似'hash.to_hash.to_yaml'或'hash.as_json.to_yaml' –
@PavelMikhailyuk to_hash工作!謝謝!你能否把它添加爲答案? – dips