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。这是我的问题。