Как отмечает Якоб, если имеется несколько дочерних записей, вам необходимо убедиться, что вы не возвращаете несколько родительских объектов.
Использование «Выбрать отличное» будет работать, но оператор выбора может помешать, когда эта область сочетается с другими областями.
Другой вариант - обеспечить присоединение к дочерней таблице, в которой есть только уникальные записи.Вы можете сделать это, составив ваше объединение следующим образом
class Product < ActiveRecord::Base
has_many registered_products
scope :with_registered_products, joins('join (select distinct product_id from registered_products) rp123456 on rp123456.product_id = products.id')
end