Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在一个模型轨道上连接或包含两个外键_Ruby On Rails_Join_Include_Foreign Keys - Fatal编程技术网

Ruby on rails 在一个模型轨道上连接或包含两个外键

Ruby on rails 在一个模型轨道上连接或包含两个外键,ruby-on-rails,join,include,foreign-keys,Ruby On Rails,Join,Include,Foreign Keys,我有一个会员应用程序,其中一个参与者有两个用户表的外键,即实际会员id user_id和将该会员添加到俱乐部的用户id。我试图创建一个方法,列出一个给定用户id被另一个用户添加到的所有俱乐部。我想得到的文本是: user.firstname (<-defined by user_id) has been added to Club.name by user.firstname (<-defined by added_by) class ClubsController < Ap

我有一个会员应用程序,其中一个参与者有两个用户表的外键,即实际会员id user_id和将该会员添加到俱乐部的用户id。我试图创建一个方法,列出一个给定用户id被另一个用户添加到的所有俱乐部。我想得到的文本是:

user.firstname (<-defined by user_id) has been added to Club.name by user.firstname (<-defined by added_by)

class ClubsController < ApplicationController

   @invites = Participant.find(current_user.id).includes(:user => foreign_key: :added_by).joins(:club)
这是我的模型

class Participant < ActiveRecord::Base
    belongs_to :user, inverse_of: :participants
    belongs_to :user,  foreign_key: :added_by
    belongs_to :current_user

class Club < ActiveRecord::Base
 has_many :participants, dependent: :destroy, inverse_of: :club
 has_many :users, through: :participants

class User < ActiveRecord::Base
      has_many :participants, dependent: :destroy
      has_many :participants,  foreign_key: :added_by

你搞乱了关系,你不能多次使用相同的关系名称,定义清晰的名称,例如,不要使用实际的类名,而是使用逻辑应用程序名称来处理关系,例如用户有一个:邀请者,有许多:朋友,归属于:培训师,尽管最后这些可能只是用户,只要你告诉rails这些是用户,rails就会理解。我不止一次拥有相同的关系名。模型参与者有User_id和Added_by,我没有列出User_id两次。你是说我应该说当事人属于:加上?rails如何通过:added\u by知道它属于用户?您添加了一个名为class\u name的额外参数,我不止一次这样说,因为您两次说了bellow\u to:User,两次说了sumany:participants