【发布时间】:2013-12-23 04:07:42
【问题描述】:
我了解关系数据库、主键/外键等的概念,但是,我无法看到在我的模型中设置这些属性的实际结果。他们会生成辅助函数或类似的东西吗?还是他们只是在数据库级别上工作?
例如,如果我有这两个模型(其他属性省略)
class Course < ActiveRecord::Base
has_and_belongs_to_many :schedules
has_many :sections
end
class Section < ActiveRecord::Base
belongs_to :course
end
我可以像这样简单地获取任何给定课程的所有部分:
Section.where(course_id: 1234)
但是,我可以在完全不建立关系的情况下执行此操作。 所以我的问题是:我们为什么要这样做?
【问题讨论】:
-
所以你可以得到 course.sections 代替。
-
它们是元编程糖魔法的东西。基本上,Rails 允许您对与模型关联相关的模型使用各种其他实例方法,只需编写
belongs_to :course。 -
谢谢大家!之前,我手动定义了像@course.sections 这样的方法,即使它们已经由关系生成了:)
标签: ruby-on-rails ruby database-relations