我有一个连接2个表的joiner表,并存储一些关于该关系的其他元信息。如何使用dataset
或model
方法从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 = ???
答案 0 :(得分:1)
Sequel中的默认设置是仅从关联表中的列中进行选择,而不是从连接表中的列中进行选择。您可以使用:select
选项指定选择:Artist.many_to_many :albums, :select=>[Sequel.expr(:albums).*, :authorship]