我正在使用RoR构建一款Fantasy Football网页游戏,用户可以通过注册,创建俱乐部并与朋友一起参加联赛。
我已经为同一个联盟中的用户构建了一个会话区域,可以单独发送消息,并且可以让它与所有用户一起工作(@users = User.all)但是,我不知道如何通过到包含用户league_id的俱乐部表。
我该怎么做?
class User < ApplicationRecord
has_secure_password
has_many :messages
has_many :conversations, :primary_key => :sender_id
has_one :club
has_one :league_chat
end
class Club < ApplicationRecord
belongs_to :user
belongs_to :league
has_many :players
end
class League < ApplicationRecord
has_one :league_chat
has_many :clubs
has_many :users, through: :clubs
end
class ConversationsController < ApplicationController
# before_action :authenticate_user
before_action :user_confirm_logged_in
def index
@users = current_user.club.league.users
@conversations = Conversation.all
end
def create
if Conversation.between(params[:sender_id], params[:recipient_id]).present?
@conversation = Conversation.between(params[:sender_id], params[:recipient_id]).first
else
@conversation = Conversation.create!(conversation_params)
end
redirect_to conversation_messages_path(@conversation)
end
private
def conversation_params
params.permit(:sender_id, :recipient_id, :league_id)
end
end
答案 0 :(得分:1)
所以你可以做到
all_league_users = current_user.club.league.users
只要你有......就可以了。
class League
has_many :clubs
has_many :users, through: :clubs
end
class Club
belongs_to :league
end
答案 1 :(得分:0)
以下内容将为您提供来自同一联盟的所有用户:
User.where(league_id: your_variable)
将your_variable
替换为包含您要为其查找用户的联盟id
的实际变量。
答案 2 :(得分:0)
users = Club.where(league_id: the_league_you_want.id).all.map(&:user).uniq