【发布时间】:2015-04-26 07:44:23
【问题描述】:
如何将给定模型的所有记录的所有关联数据融合在一起?
我有以下型号:
User --N:1--> Reservation <--1:N-- Concert
所以伪代码:
Reservation belongs_to User
Reservation belongs_to Concert
User has_many Reservations
User has_many Concerts through Reservations
Concert has_many Reservations
Concert has_many Users through Reservations
我如何将所有内容组成一个大数组?
- 我可以通过
Reservation.all获得我的所有预订 - 我可以通过
Reservation.find(25).user获取特定预订的用户 - 我可以通过
Reservation.find(25).concert获得特定预订的音乐会
但是我如何为他们所有人获得它?如果我这样做了
Reservation.all.each do |res|
res.user.name+","+res.concert.name+","+res.concert.date # etc.
end
然后它会在每个预订循环中执行两个新的数据库查询。对于 10 条记录,这可能无关紧要,但对于数千条记录,这可能会非常痛苦。添加其他关联(例如 Concert belongs_to 地点、用户 has_one 电子邮件等)...
有没有办法说“获取所有预订和以下附加信息”,以便在单个 SQL 查询中加载?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4