如何从续集的木匠表中获取价值?

时间:2016-04-18 06:43:20

标签: ruby sequel

我有一个连接2个表的joiner表,并存储一些关于该关系的其他元信息。如何使用datasetmodel方法从joiner表中获取值?

例如:

class Artist < Sequel::Model
    many_to_many :albums,
    left_key: :artist_id,
    right_key: :albums_id,
    join_table: :artists_albums
end

class Albums < Sequel::Model
    many_to_many :albums,
    left_key: :album_id,
    right_key: :artist_id,
    join_table: :artists_albums
end

Joiner表包含一个额外的字段authorship,表示艺术家是否是专辑的主要作者,合作者,客串等等:

CREATE TABLE `artists_albums` (`artist_id` integer, `album_id` integer, `authorship` varchar(255))

我想获得艺术家对特定专辑的authorship价值:

artist = Artist[1]
album = artist.albums.first

# authorship = ???

1 个答案:

答案 0 :(得分:1)

Sequel中的默认设置是仅从关联表中的列中进行选择,而不是从连接表中的列中进行选择。您可以使用:select选项指定选择:Artist.many_to_many :albums, :select=>[Sequel.expr(:albums).*, :authorship]