Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ActiveRecord排除关联_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails ActiveRecord排除关联

Ruby on rails ActiveRecord排除关联,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我需要编写一个脚本来扩充表中的数据。但是如果我跑 Thing.all.each do |thing| ... end 每个事物的所有关联也会被加载。我可以“排除”我没有使用的关联吗?默认情况下,东西。所有的都不会立即加载与东西相关的对象 但是,如果调用do end块内的任何关联记录,这是Rails从数据库获取数据的唯一时间。下面是一个例子 Thing.all.each do |thing| # ... puts thing.animal.name # ... end 如果你

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

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

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

默认情况下,
东西。所有的
都不会立即加载与
东西相关的对象

但是,如果调用do end块内的任何关联记录,这是Rails从数据库获取数据的唯一时间。下面是一个例子

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


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

你是在寻找
Thing.where(..)do | Thing | end
?或者如果你想排除记录,那么
Thing.where.not(..)do | Thing | end
嗯,好吧,有点不对劲,因为我的关联似乎确实急于加载而没有提示。@BaileySmith,也许您在do end块中有一个调用关联对象的代码?不,我在调用一个与Animal中的一个列同名的列,但这不应该是问题
Thing.all.each{| t | if t.text;put t.id;end}
。Animal还有一个
text
列。刚才注意到有一个默认范围包括Animal。这是我的问题。