Ruby on rails 3 联接、包含和关联之间的差异
我刚开始使用rails。到目前为止我很喜欢,但有一些事情我还没有掌握 其中之一是Ruby on rails 3 联接、包含和关联之间的差异,ruby-on-rails-3,activerecord,Ruby On Rails 3,Activerecord,我刚开始使用rails。到目前为止我很喜欢,但有一些事情我还没有掌握 其中之一是连接/包含和关联之间的交互。对于您定义的每个模型(有许多,属于,等等)与其他模型的关系。这足以让他们通过主键连接并找到对方,对吗 那么,使用连接/包含有什么意义呢?我自己的猜测是减少sql查询,只获取必要的对象,但我想澄清一下这一点。 连接的关联是否像作用域是到顺序/where等一样是一种可修改的默认行为 我真的很想把这件事弄清楚。很好地涵盖了这一点 有效地,join用于高效地连接数据库服务器上的两个表。但是,默认情
连接/包含和关联之间的交互。对于您定义的每个模型(有许多
,属于
,等等)与其他模型的关系。这足以让他们通过主键连接并找到对方,对吗
那么,使用连接/包含有什么意义呢?我自己的猜测是减少sql查询,只获取必要的对象,但我想澄清一下这一点。
连接的关联是否像作用域是到顺序/where
等一样是一种可修改的默认行为
我真的很想把这件事弄清楚。很好地涵盖了这一点
有效地,join
用于高效地连接数据库服务器上的两个表。但是,默认情况下,数据集中只包括第一个表中的列。您可以使用join
根据第二个表中的条件测试第一个表中的记录
include
类似于join,但对第二个表的行中的任何相关记录执行有效的数据检索,并用这些记录填充RailsActiveRecord
缓存
因此,如果您有一个用户
类和一个角色
类,其中用户
可以附加一个角色
,那么用户和角色实例将同时从数据库中检索
User#5=>指向=>Role#7
用户10=>指向=>角色12
使用includes()
从用户表检索用户5和10还将使用SQL查询实例化角色7和12,例如:
选择角色。*从(7,12)中id所在的角色中选择