Ruby on rails 3 Include在Rails的查询中有许多记录

Ruby on rails 3 Include在Rails的查询中有许多记录,ruby-on-rails-3,activerecord,group-concat,Ruby On Rails 3,Activerecord,Group Concat,我在模型用户和模型播放器之间有很多(通过帐户)关联 我想知道查询所有用户的最佳方法是什么,并为每个返回的记录获取相关的players用户名属性(以逗号分隔的值) 例如,如果一个名为“John”的用户与3个用户名为“John_black”、“John_white”、“John_yellow”的玩家关联。我希望查询不仅返回用户属性,还返回一个名为player\u username的属性,该属性的值为:john\u black、john\u white、john\u yellow 我在用户模型中尝试了

我在模型用户和模型播放器之间有很多(通过帐户)关联

我想知道查询所有用户的最佳方法是什么,并为每个返回的记录获取相关的players用户名属性(以逗号分隔的值)

例如,如果一个名为“John”的用户与3个用户名为“John_black”、“John_white”、“John_yellow”的玩家关联。我希望查询不仅返回用户属性,还返回一个名为player\u username的属性,该属性的值为:
john\u black、john\u white、john\u 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控制台中执行此操作,它会工作,但如果我尝试从模型中获取,则不会获得逗号分隔的值


我缺少什么?

我相信ActiveRecord会将SQL查询检索到的所有列与模型上的所有属性进行映射,在大多数情况下,这些属性完全相同。如果在模型上创建虚拟访问器,ActiveRecord可能会将虚拟列映射到虚拟属性

class User

  attr_accessible :player_username
  ...

尝试一下,看看这是否有效。

我相信ActiveRecord会将SQL查询检索到的所有列与模型上的所有属性进行映射,在大多数情况下,这些属性是完全相同的。如果在模型上创建虚拟访问器,ActiveRecord可能会将虚拟列映射到虚拟属性

class User

  attr_accessible :player_username
  ...
试试看这是否有效