2016-02-16 3 views
0

Мне нужно написать скрипт для увеличения данных в моей таблице. Однако, если я запустилActiveRecord Exclude Association

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

все ассоциации для каждой вещи также загружены. Могу ли я «исключить» ассоциации, которые я не использую?

+1

Вы ищете 'Thing.where (....) do | thing | конец'? –

+1

Или если вы хотите исключить записи, то 'Thing.where.not (....) do | thing | end' –

ответ

0

По умолчанию Thing.all не захочет загружать объекты, связанные с Thing.

Если вы однако вызываете любую связанную запись внутри блока do-end, это единственный раз, когда Rails будет извлекать данные из базы данных. Примером может быть что-то ниже.

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

Если вы Thing.all.includes(:animal), это код, который нетерпеливые записи нагрузки на животных.

+0

Хм, хорошо, тогда что-то не так, потому что мои ассоциации, безусловно, кажутся нетерпеливой загрузкой без подсказки. –

+0

@BaileySmith, может быть, у вас есть код внутри блока do-end, который вызывает связанные объекты? –

+0

Нет, я вызываю столбец в Thing, который имеет то же имя, что и столбец в Animal, но это не должно быть проблемой 'Thing.all.each {| t | если t.text; ставит t.id; конец} '. У животного также есть столбец «текст». –

Смежные вопросы