RAILS ActiveRecord ::关系如何获得多对多但是:表名

时间:2016-10-21 10:01:49

标签: mysql ruby-on-rails ruby activerecord

我正在寻求覆盖activerecord方法,但我需要访问表名多对多关系:通过。我该怎么做?

例如我有模型学生和主题,连接两个我使用has_many主题,通过:: register。

我有一个语句Student.find(1).subjects,我如何从activerecord语句中获取表名注册?

谢谢

3 个答案:

答案 0 :(得分:0)

Student.rb

Class Student < ActiveRecord::Base
  has_many :registers 
  has_many :subjects, :through => :registers
end

subject.rb中

class Subject < ActiveRecord::Base
  has_many :registers 
  has_many :students, :through => :registers
end

register.rb

Class Register
  belongs_to :student
  belongs_to :subjet
end

确保您的关联添加如下。您可以按Student.find(1).subjects

获取所有主题列表

您还可以使用Register.all

检查注册表中的条目

答案 1 :(得分:0)

您可以访问以下所有注册记录。

Register.all

答案 2 :(得分:0)

根据您的声明“Student.find(1).subjects”,如果您希望获得注册以及主题详细信息,您可以这样做:

Student.find(1).subjects.select("subjects.name, registers.name")