Rubellum fly light

ほぼPHP日記

Sequel で特定のカラムを指定するときは Sequel[:table][:column]

Ruby でサクッと DB にアクセスするときに Sequel をよく使っています。

同名カラムを持つテーブルをJOINするときはどちらのテーブルのカラムかを指定しますが、Sequelでの指定方法を忘れがちなので備忘録がてらメモを残します。

下記のようなフォーマットで指定します。

Sequel[:table][:column]

tag テーブルの slug カラムなら↓のようになります。

Sequel[:tag][:slug]

サンプル

@db[:tag].left_join(:tag_items, tag_id: :id, type: "source")
                 .select(Sequel[:tag][:id], Sequel[:tag_items][:id])
                 .where(name: source_tags)
                 .sql

生成するSQL

SELECT
  `tag`.`id`,
  `tag_items`.`id`
FROM
  `tag`
LEFT JOIN
  `tag_items` ON ((`tag_items`.`tag_id` = `tag`.`id`) AND (`tag_items`.`type` = 'source'))
WHERE
  ((`name` IN ('hoge'))