ActiveRecord排除关联

时间:2016-02-16 18:36:21

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

我需要编写一个脚本来扩充表格中的数据。但是,如果我跑

Thing.all.each do |thing|
  ...
end

每个东西的所有关联也被加载。我可以“排除”我没有使用的关联吗?

1 个答案:

答案 0 :(得分:0)

默认情况下,Thing.all不会急切加载与Thing相关联的对象。

但是,如果你在do-end块中调用任何相关记录,那么这是Rails从数据库中获取数据的唯一时间。一个例子如下。

Thing.all.each do |thing|
  # ...
  puts thing.animal.name
  # ...
end

如果你执行Thing.all.includes(:animal),这是急于加载动物记录的代码。