我在模型用户和模型播放器之间有一个 has_many(通过帐户)关联。
我想知道查询所有用户的最佳方式是什么,并为每个返回的记录获取关联的玩家用户名属性(以逗号分隔的值)。
因此,例如,如果一个名为“John”的用户与 3 个用户名分别为“john_black”、“john_white”、“john_yellow”的玩家相关联。我希望查询不仅返回用户属性,还返回一个名为例如 player_username 的属性,该属性将具有以下值:john_black, john_white, john_yellow
.
我在用户模型中尝试了以下 Arel 查询:
select(`users`.*).select("GROUP_CONCAT(`players`.`username` SEPARATOR ',') AS comma_username").joins(:user)
.joins(:accounts => :player )
这给了我以下SQL:
SELECT `users`.*, GROUP_CONCAT(`players`.`username` SEPARATOR ',') AS comma_username FROM `users` INNER JOIN `accounts` ON `accounts`.`user_id` = `users`.`id` INNER JOIN `players` ON `players`.`id` = `accounts`.`player_id`
如果我在 MySQL 控制台中执行它,它可以工作,但是如果我尝试从模型中获取,我不会得到逗号分隔的值。
我错过了什么?