从一个又一个模型中获取记录的最佳方法 - Rails

时间:2017-07-25 12:46:19

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

我的模型@OneToMany(mappedBy="customer",cascade=CascadeType.ALL, fetch=FetchType.LAZY) @BatchSize(size=25) private Set<Contact> contacts = new HashSet<Contact>(); 包含与Booking模型相关联的space_id个属Space

现在我有多个空格,并希望根据每个ID计算每个预订。

我希望获得最佳方法来从数据库中删除记录,而不会反复查询。 目前,我这样做:

belongs_to :space

但是这会一次又一次地触发查询形成db。有没有最好的办法呢?

1 个答案:

答案 0 :(得分:1)

这称为“N + 1查询”问题。在Rails中,您可以使用预先加载来解决它。您可以使用includes通过将代码的第一行更改为

来在单个查询中加载记录
spaces = Space.eager_load(:bookings)

以下是对Rails link中热切加载的方式(includeseager_loadpreload)的良好解释和比较。