都道府県の名前に「京都」を含む(「東京都」「京都府」がヒット)レコードを検索して、先頭10件を取得する例: 関連するテーブルをJOINして、こんな感じで検索してくれると期待していました。 SELECT `p`.*, `ms`.*, `md`.*, `mp`.* FROM `person` AS `p` INNER JOIN `master_sex` AS `ms` ON `p`.`sex_id` = `ms`.`id` INNER JOIN `master_prefecture` AS `mp` ON `p`.`prefecture_id` = `mp`.`id` INNER JOIN `master_district` AS `md` ON `mp`.`district_id` = `md`.`id` WHERE `mp`.`name` LIKE '%京都%' ORDER BY `p`.`id` LIMIT 100 ; ところが、そんなに甘くはありませんでした。
`person` AS `p` INNER JOIN `master_sex` AS `ms` ON `p`.`sex_id` = `ms`.`id` INNER JOIN `master_prefecture` AS `mp` ON `p`.`prefecture_id` = `mp`.`id` INNER JOIN `master_district` AS `md` ON `mp`.`district_id` = `md`.`id` WHERE `mp`.`name` LIKE '%京都%' ORDER BY `p`.`id` LIMIT 100 ; • JOINするテーブルの参照項目を定義(テーブル名ではなく、参照フィールド) • SELECTで取得する項目を定義 • モデルでfilterする前にselect_relatedメソッドを呼び出す(引数:JOINするテーブルの参照項目) • filterの後でvaluesメソッドを呼び出す(引数:取得する項目) 探してみたら、あった!!