2014-06-24 49 views
5

'Ayarlar' adı verilen 'json' sütununa sahip 'my_models' adlı bir masa var.PostGresql JSON sütunu HashWithIndifferentAccess olarak

class MyModels < ActiveRecord::Base 
end 

bir 'MyModels' örneğinin 'ayarlar' niteliği bir Hash geçerli:

şunlarla modeli var.

'MyModels', 'settings' öğesinin ham sütun değerini Hash yerine HashWithIndifferentAccess'e yazmak için yapılandırılabilir mi?

cevap

5

serialize yalnız alışkanlık hem load ve dump yöntemlere yanıt vermiyor HashWithIndifferentAccess beri burada çalışır, ancak bunu yapabilirsiniz:

class THEModel < ActiveRecord::Base 
    def my_hash_attribute 
    read_attribute(:my_hash_attribute).with_indifferent_access 
    end 
end 

da Custom serialization for fields in Rails

+0

Ahh özel serileştirici bakın. Her zaman onların metin sütunlarıyla sınırlı olduğunu düşündüm, ama harika çalışıyor! – Jacob

+8

Bu işe yarıyorsa, muhtemelen hash'leri doğrudan düzenlemenizi engellediğine dikkat edilmelidir. model.my_hash_attribute = {} model.my_hash_attribute: Örneğin: çoğu kişi bunu beklenen şekilde [testi] = "abc" model.my_hash_attribute # {} çalışmaz. – joncalhoun