Разработка модели 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 в базу данных заказов)
Я скорее новичок, поэтому прошу прощения, если это чепуха, и, пожалуйста, удалите:)