我读过“当涉及到主要的 CRUD 方法时,关系就像模型一样嘎嘎作响。”
为什么 Relation 不能完成所有工作,让 Base 实例化然后返回 Relation 有什么意义,这显然与它有同样的担忧?
在 Rails 3 中,数据库行为被分解为不同的混入。这样,某些东西就可以进行验证,而不必从 ActiveRecord::Base 继承。ActiveRecord::Base 类引入了执行数据库操作所需的所有混入。
此外,关系实际上不是记录或记录集。它可以保留为查询的萌芽,因此可以将其链接起来,直到链中的某些内容返回记录或记录集。
因此, where 方法返回一个 Relation 对象。该对象可以调用 where 以在查询中返回另一个带有另一个过滤器的 Relation 对象。依此类推,直到调用 all, first, count 或其他方法以使返回的对象成为查询的结果。