ile PostGres'te depolanan jsonun yalnızca bir kısmı nasıl seçilir? türünde settings
adı verilen bir modele sahip olduğum bir Model User
. en bu alan kabaca şöyle düşünelim:ActiveRecord
{
color: 'red',
language: 'English',
subitems:
{
item1: true,
item2: 43,
item3: ['foo', 'bar', 'baz']
}
}
ben User.select(:settings)
yaparsanız ben her kullanıcı için tüm ayarları alacaktır. Ama sadece bir kullanıcı için dil almak istiyorum.
User.select("settings -> 'language'")
ve
User.select("settings ->> 'language'")
ama bu sadece döner boş nesneler:
[#<User:0x007f381fa92208 id: nil>,
...]
bu hiç mümkün mü ben hem çalıştı? Varsa - sadece json
'u kullanarak yapabilir miyim veya jsonb
'a geçmem gerekiyor mu?
* boş nesneler * - bundan emin misiniz? Sonuçta '.map (&: attributes)' yapmayı deneyin. –
Haklısınız. 'attributes' bu değeri döndürür: {"id" => nil, "? column?" => "English"} '. Beni şaşırtmış olan şey normal bir nesnenin normal (json değil) bir öznitelik seçerken böyle görünmesidir: '#'. Ancak, görünüşe göre json seçilmiş veriler bu şekilde çalışmıyor. –
Sadece ** bilinen ** sütunları çıkaran bir şekilde tanımlanmış olan '' to ''. ** 'select''den gelen özel ** sütunların tablo içinde olduğu bilinmemekte, bu nedenle # to_s' biçiminde yazdırılmamaktadırlar, ancak [mapped regardless] (http://stackoverflow.com/questions/34701667) /-of-the nerede-do-biz-beyan-öznitelikleri-raylar-model/34705079 # 34705079). –