Разработка модели Rails для has_many с моделью фильтра

У меня есть Client модель, которая has_many :orders но каждый заказ также belongs_to :order_type, OrderType здесь используется как таблица фильтра в основном, так как каждый заказ имеет набор общих атрибутов, таких как :category, :size, :date и имеет несколько тысяч записей, поэтому для меня имеет смысл сохранить это в отдельной модели, а не хранить эту информацию при каждой отдельной записи заказа.

Я немного сбит с толку относительно того, как настроить ассоциации и что мне нужно для таблицы соединений, чтобы я мог в основном запросить что-то вроде этого:

c = Client.find(x)
order_conditions = {date: "2016-01-01".."2016-01-31", category: "x")

Как мне настроить таблицы моделей и ассоциаций / объединений, чтобы я мог получить все заказы, которые соответствуют определенному списку условий OrderType для данного клиента?

Похоже, мне нужно где-то несколько соединений в соответствии с этим 12.1.3 Joining Multiple Associations

2 ответа

Решение

Тебе стоит попробовать

def Client
  has_many :orders
end

def Order
  belongs_to :client
  belongs_to :order_type
end

def OrderType
  has_many :orders
end


# To query
client.orders.joins(:order_type).where(order_types: { date: date })

Не могли бы вы не сделать

OrderType own_to: заказ

И заказ has_one: тип заказа

Затем вы можете найти все заказы с соответствующим типом заказа. (Хотя я бы, вероятно, просто включил order_type в базу данных заказов)

Я скорее новичок, поэтому прошу прощения, если это чепуха, и, пожалуйста, удалите:)

Другие вопросы по тегам