Фильтрация устаревших элементов из таблицы

0

мое приложение построено с использованием ruby on rails, под управлением mysql DB. Он имеет 2 таблицы (модели) - продукт (id, name, created_at, updated_at и т.д.) и product_details (id, product_type, product_id, expires_on, created_at, updated_at и т.д..) (соединен столбцом идентификатора продукта).

Мне нужно выбрать только те активные записи ИЛИ product_ids из модели/таблицы продуктов, которые удовлетворяют одному из следующих критериев: сведения о продукте для этого конкретного продукта устарели/истекли (expires_on столбец присутствует в таблице product_details) или нет записи для этого продукта в таблице product_details (действительный сценарий в моем случае использования)

Обратите внимание, что product_id - это внешний ключ, который ссылается на продукт (id)

Любая помощь приветствуется. Заранее спасибо! :)

Теги:
join
model
activerecord

1 ответ

1

При условии, что:

class Product < ApplicationRecord
  has_one :product_detail
end

а также

class ProductDetail < ApplicationRecord
  belongs_to :product
end

Вы можете использовать простой однострочный запрос для получения продуктов и продуктов с истекшим сроком действия без подробностей:

Product.select { |p| p.product_detail.nil? || p.product_detail.expires_on <= Date.today }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню