Принятое решение не работает. Chrome печатал пустую страницу, потому что она не загружала изображение вовремя. Этот подход работает:
Изменить: похоже, принятое решение было изменено после моего сообщения. Почему нисходящий? Это решение работает также.
function printDiv(divName) {
var printContents = document.getElementById(divName).innerHTML;
w = window.open();
w.document.write(printContents);
w.document.write('<scr' + 'ipt type="text/javascript">' + 'window.onload = function() { window.print(); window.close(); };' + '</sc' + 'ript>');
w.document.close(); // necessary for IE >= 10
w.focus(); // necessary for IE >= 10
return true;
}
Мой желаемый результат - присоединиться к
blockquote>fb_posts
, но перед тем, как присоединиться, я бы хотел отфильтроватьfb_groups
по определенным идентификаторам. Как я могу это сделать?Я использовал
fb_groups
сid
1
,2
и3
только для примераFbGroup.where(id: [1, 2, 3]).joins(:fb_posts).count
Я думаю, что это дублирование записей в объединениях. Вы должны использовать group_by с соединениями, чтобы устранить это. Попробуйте,
FbGroup.joins(:fb_posts).where('fb_groups.id IN (?)', ids).group('fb_groups.id').length
Пожалуйста, исправьте, если я ошибаюсь.
Почему эти два запроса приводят к разным результатам?
blockquote>Объединение может привести к записи 1: N (от одного до многих). Например. если у одного
FbGroup
есть дваFbPost
, вы получите две записи, когда присоединитесь.Мой желаемый результат - присоединиться к fb_posts, но перед тем как присоединиться, я бы хотел отфильтровать fb_groups по определенным идентификаторам. Как я могу это сделать?
blockquote>Ваш второй запрос уже делает это. Когда вы фильтруете с помощью объединения или соединения, а затем фильтруете во внешнем запросе, вы все равно получите те же результаты.