У меня возникли проблемы с запросом, над которым я работал. Я хочу включить условие с этим.rails присоединяется к запросу с условиями
FooDiscount.where(bar_code_id: object.id).joins(foo: [:foo_items]).sum(:quantity)
Это будет возвращать правильное количество мне нужно, но я ищу, чтобы добавить условие .joins(foo: [:foo_items])
Я только хочу, чтобы вернуть foo_items
если foo.order_status.code != "cancelled"
Update:
Раньше я не сделал упомяните, что foo
может иметь_many order_statuses
. Таким образом, запрос дает мне неправильные результаты. Извините за путаницу.
Я собирался палец вверх но что происходит, если 'foo' has_many: order_status, и они находятся в разных состояниях (например, некоторые из них« отменены », но текущий« открыт »). Затем он хотел бы создать ассоциацию' has_one: current_order_status', если только заботится о текущем возможно или 'has_many: cancel_order_status', если он волнуется, если он когда-либо был отменен – drhenner
@drhenner, судя по файлу OP foo.order_status.code, его has_one, поэтому не стесняйтесь сбрасывать пальцы;) –
Если это принадлежит__ o более быстрый запрос состоял бы в кэшировании 'order_status_id', который ==« отменен ». то '.where.not (foo: {order_status_id: OrderStatus.CANCELED_ID})' без дополнительного order_status join – drhenner