2010-03-15 13 views
6

içinde :methods kullanırken, anahtarı yeniden adlandırmanın bir yolu var mı? Ben gerçek id bir base62 sürümü ile değiştirmeye çalışıyorum ve :id anahtar için base62_id değerini istiyorum. to_json için farklı anahtar kullanarak: yöntemler

@obj.to_json(
    :except => :id 
    :methods => :base62_id 
) 

Ben

@obj.to_json(
    :except => :id 
    :methods => { :id => :base62_id } 
) 

yapmaya çalıştım ama işe yaramadı.

Herhangi bir tavsiye?

cevap

2

to_json serializer, serileştirmenin anahtarı olarak yöntemin adını kullanır. Yani bunun için methods seçeneğini kullanamazsınız.

Şimdi
def to_json(options={}) 
    oid, self.id = self.id, self.base62_id(self.id) 
    super 
ensure 
    self.id = oid 
end 

to_json beklenen sonucu döndürür: Maalesef to_json yöntem aksi takdirde

@obj.to_json(:except => :id) {|json| json.id = base62_id } 

Yani bu bir çirkin hack gibi bize bırakıyor benzer bir şey yapmış olabilir, t accept block` parametreyi etmiyor .

İlgili konular