假设我有两个表,一个包含个人信息的学生主列表,以及一个班级中的学生注册列表.这两个表共享一个公共列,这是一个唯一标识学生的字符串,但它不是主键.
假设我想显示页面上的所有注册,以及来自学生的一些个人数据(比如说可能是家乡).
我明白这将是一个非常多的关系.主列表记录有许多注册.注册属于学生.
class Student < ActiveRecord::Base has_many :enrollments end class Enrollment < ActiveRecord::Base belongs_to :student end
这是两者之间的正确关系,如果是这样,我如何对共享列进行连接查询?
理想情况下,Rails期望以下列:
Student table: - id Enrollment table: - student_id
这样做,你的关系应该有效.
然后尝试一下,放入Rails控制台并玩游戏:
@student = Student.first @student.enrollments
看一下使用关联的这个伟大的Rails参考:
http://guides.rubyonrails.org/association_basics.html
是ActiveRecord将为您管理关系,但您也可以在关系中搜索条件时指定联接.例如:
User.find(:all, :joins => :phone_numbers, :conditions => { :phone_numbers => {:name => 'business'} })
请注意,虽然条件声明使用哈希仅在Rails 2.2中
但是大多数时候只使用ActiveRecord关系has_many
应该没问题,如上面的答案中所提到的,你可以使用就像直接在模型上调用对象一样...@student.enrollments