Ruby on rails 使用联接模型将模型与自身关联
我有两种型号:Ruby on rails 使用联接模型将模型与自身关联,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有两种型号: 使用者 指导关系 MentingRelationship是一个连接模型,它有一个mentor_id列和一个mentee_id列(这两个列都引用用户表中的用户id) 如何在用户类上指定一个名为“mentees”的关系,该关系将返回该用户指导的所有用户,并使用“指导关系”联接表?我们需要在用户模型和指导关系模型中声明哪些关系?您可以使用以下方法来实现。 在user.rb中 def mentees user = User.find_by_sql("select u.* from
- 使用者
- 指导关系
如何在用户类上指定一个名为“mentees”的关系,该关系将返回该用户指导的所有用户,并使用“指导关系”联接表?我们需要在用户模型和指导关系模型中声明哪些关系?您可以使用以下方法来实现。 在user.rb中
def mentees
user = User.find_by_sql("select u.* from the users u, mentoring_relationships m where m.mentor_id = #{self.id} and u.id = m.mentee_id")
end
In controller
@user.mentees >> all of the users mentored by @user
在我的头顶上,指的是:
类用户:指导关系
有很多:导师,:通过=>:导师关系
结束
班级指导关系“用户”
属于:mentor,:class\u name=>“用户”
结束
未经测试,但这似乎应该有效。我相信这是有效的
class User < ActiveRecord::Base
has_many :mentees, :foreign_key => :mentee_id,
:class_name => "MentoringRelationship"
has_many :mentors, :foreign_key => :mentor_id,
:class_name => "MentoringRelationship"
end
class MentoringRelationship < ActiveRecord::Base
belongs_to :mentee, :class_name => "User"
belongs_to :mentor, :class_name => "User"
end
多亏了,我才能够把一些有用的东西组合起来
应用程序内/models/user.rb
has_many :mentee_relationships, :class_name => 'MentoringRelationship', :foreign_key => :mentor_id
has_many :mentees, :through => :mentee_relationships, :source => :mentee, :foreign_key => :mentor_id
has_many :mentor_relationships, :class_name => 'MentoringRelationship', :foreign_key => :mentee_id
has_one :mentor, :through => :mentor_relationships, :source => :mentor, :foreign_key => :mentee_id
belongs_to :mentee, :class_name => "User"
belongs_to :mentor, :class_name => "User"
应用程序内/模型/指导关系。rb
has_many :mentee_relationships, :class_name => 'MentoringRelationship', :foreign_key => :mentor_id
has_many :mentees, :through => :mentee_relationships, :source => :mentee, :foreign_key => :mentor_id
has_many :mentor_relationships, :class_name => 'MentoringRelationship', :foreign_key => :mentee_id
has_one :mentor, :through => :mentor_relationships, :source => :mentor, :foreign_key => :mentee_id
belongs_to :mentee, :class_name => "User"
belongs_to :mentor, :class_name => "User"