ActiveRecord 关联关系全解析
1. 关联关系的层次结构
Active Record 关联允许我们声明式地表达模型类之间的关系,这也是 Rails 如此特别的重要原因之一。关联通常以 ActiveRecord 模型对象上的方法形式出现,比如 user.timesheets 可能代表与给定用户关联的时间表。
不过,人们可能会对这些关联方法返回的对象类型感到困惑。因为它们常常伪装成普通的 Ruby 对象或数组。实际上, has_many 关联的关联方法是 HasManyAssociation 的实例,而所有关联的父类是 AssociationProxy 。
以下是部分代码示例,展示了如何判断 timesheets 实际上是一个代理:
>> obie.timesheets.respond_to? :proxy_owner
=> true
如果确实需要得到一个实际的 Array 对象,可以调用 to_a 方法:
>> obie.timesheets.to_a
=> []
所有 has_many 关联的父类是 AssociationCollection
ActiveRecord关联关系详解
超级会员免费看
订阅专栏 解锁全文
4

被折叠的 条评论
为什么被折叠?



