Вам нужно использовать левое соединение, чтобы получить все записи из первой таблицы.Это даст вам NULL
значения для связанной таблицы, как вам нужно.
ПРИМЕЧАНИЕ: Пожалуйста, измените ссылки на Product
модель / таблицу на соответствующую.
Рельсы 5 и выше
left_joins(:sales).select('products.*, sales.sale_cost').each do |product|
csv << [
product.item_name,
product.item_number,
(product.sale_cost || 'N/A')
]
end
Рельсы 4 и ниже
Product.joins("left join sales on products.id = sales.product_id")
.select('products.*, sales.sale_cost')
.each do |product|
csv << [
product.item_name,
product.item_number,
(product.sale_cost || 'N/A')
]
end
Это приведет к чему-то вроде:
pencil,12345,20
pencil,12345,10
eraser,11223,5
box,11333,N/A