0
嗨,我是想在緩存memcached的查詢結果,但不幸的是,我無法做到這一點,因爲對象是一個ActiveRecord :: OrderedHash對象:轉換的ActiveSupport :: OrderedHash簡單的哈希
result = Car.where(:brand => 'BMW').order(:model_name).group(:model_name).count(:model_name)
#=> {'120d' => 23, '316i' => 3, '525d' => 50} which is a ActiveRecord::OrderedHash if i ask .class
Rails.cache.write('cached_result', result)
這將返回以下錯誤:
編組錯誤的密鑰'cached_result':無法轉儲散列與默認proc 您試圖緩存不能序列化爲memcached的Ruby對象。 /Users/nk/.rvm/gems/[email protected]/gems/dalli-2.1.0/lib/dalli/server.rb:277:in`dump'
什麼是最好的/最簡單的做法來解決這個問題?
你設置散列的默認值? –
不是我所知道的 - 它應該像你詢問後一樣工作嗎? –
我會這樣想 - 在1.9 [OrderedHash](https://github.com/rails/rails/blob/3-2-stable/activesupport/lib/active_support/ordered_hash.rb)只是哈希的一個子類並沒有真正添加任何東西 –