ruby – 在Sequel中检索嵌套记录
发布时间:2020-12-17 03:22:23 所属栏目:百科 来源:网络整理
导读:我正在尝试从以下两个表中检索嵌套形式的数据(在SQLite中) DB = Sequel.sqlite('database.sqlite')DB.create_table? :artists do primary_key :id String :nameendDB.create_table? :albums do primary_key :id String :title foreign_key :artist_id,:artis
我正在尝试从以下两个表中检索嵌套形式的数据(在SQLite中)
DB = Sequel.sqlite('database.sqlite') DB.create_table? :artists do primary_key :id String :name end DB.create_table? :albums do primary_key :id String :title foreign_key :artist_id,:artists,:key => :id end artists = DB[:artists] albums = DB[:albums] id1 = artists.insert(:name => 'Mike') id2 = artists.insert(:name => 'John') albums.insert(:title => 'Only You',:artist_id => id1 ) albums.insert(:title => 'Only Us',:artist_id => id1 ) albums.insert(:title => 'Only Me',:artist_id => id2 ) 我想要的输出 – [ { :id => 1,:name => 'Mike' :albums => [ { :id => 1,:title => 'Only You' },{ :id => 2,:title => 'Only Us' } ] },{ :id => 2,:name => 'John' :albums => [ { :id => 3,:title => 'Only Me' } ] } ] 我试过’急切’加载 – class Artist < Sequel::Model(:artists) one_to_many :db[:albums],:key => :artist_id end class Album < Sequel::Model(:albums) many_to_one :artist,:key => :artist_id end Artist.eager(:albums).all{ |a| p a } 但那没用. 谁能指出我正确的方向? 解决方法
Artist.eager(:albums).all会热切地加载相册,但是{| a | p a}不会显示专辑(因为Sequel :: Model#inspect只显示当前模型的值,而不显示任何关联的对象).使用{| a | p [a,a.albums]}看到相册已经加载.
如果要生成您描述的哈希: Artist.eager(:albums).all.map do |a| a.values.merge(:albums=>a.albums.map{|al| al.values}) end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |