リファレンス
pluckは便利
便利ですが、
-
table_a
とtable_b
にname
という同名のカラムがある - table_a, bを join する
- 任意のテーブルのnameカラムを指定して取得したい(場合によっては両方)
この場合、どう指定すれば良いでしょうか?
リファレンスからは読み取りづらい状態です。
エラー例
TableA.join(:table_b).pluck(:name)
# Mysql2::Error: Column ‘name’ in field list is ambiguous: SELECT ...
結論
- 名前が重複している場合、シンボルを使わずに、
テーブル名.カラム名
で指定します。 - シンボルを使うとうまくいかないです。
- 名前が被っているのを両方指定しても大丈夫です。
Model.pluck('table_a.name', 'table_b.name')