1

私は3つのモデルを持っています:

class User < ActiveRecord::Base
  has_and_belongs_to_many :groups
end

class Group < ActiveRecord::Base
  has_and_belongs_to_many :channels
  has_and_belongs_to_many :users
end

class Channel < ActiveRecord::Base
  has_and_belongs_to_many :groups
end

特定のユーザーのすべてのチャネルを (重複なしで) 取得する最も効率的な方法は何ですか?

効果的に:

SELECT DISTINCT name FROM users
  JOIN groups_users ON users.id=groups_users.user_id
  JOIN channels_groups ON groups_users.group_id=channels_groups.group_id
  JOIN channels ON channels_groups.channel_id=channels.id;
4

1 に答える 1