Ruby on rails 无法将哈希对象与ActiveSupport::HashWithInferenceTaccess合并

Ruby on rails 无法将哈希对象与ActiveSupport::HashWithInferenceTaccess合并,ruby-on-rails,ruby,hash,Ruby On Rails,Ruby,Hash,我有一个哈希对象(类名哈希): 我有一个params对象(类名ActiveSupport::HashWithInferenceTaccess) 我想用deep_merge合并这些对象 h1.深度合并(h2) 然后我得到: { :hot_products=>{:enabled=>true, :always_enable=>false, :order=>0}, :recent_products=>{:enabled=>true, :always_enable=

我有一个哈希对象(类名哈希):

我有一个params对象(类名ActiveSupport::HashWithInferenceTaccess)

我想用deep_merge合并这些对象

h1.深度合并(h2)

然后我得到:

{
 :hot_products=>{:enabled=>true, :always_enable=>false, :order=>0},
 :recent_products=>{:enabled=>true, :always_enable=>true, :order=>1},
 :event_promotion=>{:enabled=>true, :always_enable=>false, :order=>2},
 "hot_products"=>{"enabled"=>"1"},
 "recent_products"=>{"enabled"=>"0"},
 "event_promotion"=>{"enabled"=>"1"}
}

有人知道如何合并这两个对象吗?

问题是
h1
有符号键,
h2
有字符串键

h1
设为
hashwithindifferenceaccess

h1 = {
 :hot_products=>{:enabled=>true, :always_enable=>false, :order=>0},
 :recent_products=>{:enabled=>true, :always_enable=>true, :order=>1},
 :event_promotion=>{:enabled=>true, :always_enable=>false, :order=>2}
}.with_indifferent_access

现在,您可以
deep\u merge
散列,它将返回正确的结果

h1.deep_merge(h2)

{
 "hot_products"=>{"enabled"=>"1", "always_enable"=>false, "order"=>0},
 "recent_products"=>{"enabled"=>"0", "always_enable"=>true, "order"=>1}, 
 "event_promotion"=>{"enabled"=>"1", "always_enable"=>false, "order"=>2}
}

问题是
h1
有符号键,
h2
有字符串键

h1
设为
hashwithindifferenceaccess

h1 = {
 :hot_products=>{:enabled=>true, :always_enable=>false, :order=>0},
 :recent_products=>{:enabled=>true, :always_enable=>true, :order=>1},
 :event_promotion=>{:enabled=>true, :always_enable=>false, :order=>2}
}.with_indifferent_access

现在,您可以
deep\u merge
散列,它将返回正确的结果

h1.deep_merge(h2)

{
 "hot_products"=>{"enabled"=>"1", "always_enable"=>false, "order"=>0},
 "recent_products"=>{"enabled"=>"0", "always_enable"=>true, "order"=>1}, 
 "event_promotion"=>{"enabled"=>"1", "always_enable"=>false, "order"=>2}
}
试试这个

h1=ActiveSupport::HashWithIndifferentAccess.new(h1)
h1.deep_merge(h2)
=> {"hot_products"=>{"enabled"=>"1", "always_enable"=>false, "order"=>0}, "recent_products"=>{"enabled"=>"0", "always_enable"=>true, "order"=>1}, "event_promotion"=>{"enabled"=>"1", "always_enable"=>false, "order"=>2}} 
试试这个

h1=ActiveSupport::HashWithIndifferentAccess.new(h1)
h1.deep_merge(h2)
=> {"hot_products"=>{"enabled"=>"1", "always_enable"=>false, "order"=>0}, "recent_products"=>{"enabled"=>"0", "always_enable"=>true, "order"=>1}, "event_promotion"=>{"enabled"=>"1", "always_enable"=>false, "order"=>2}}