在项目中有时候会遇到 N+1 问题,例如:
clients = Client.limit(10)
clients.each do |client|
puts client.address.postcode
end
rails 提供了按需加载机制,可以避免这个问题:
clients = Client.includes(:address).limit(10)
clients.each do |client|
puts client.address.postcode
end
但是如果在预加载的过程中,相关联的数据发生了变化,那读出来的数据会和数据库中的不一致,这个问题要如何解决呢?