我有一个像这样的SQL查询:
select *
from orders
where order_session_id IN (
select id order_status
from order_sessions
where order_status IN (
select id
from order_status_types
where order_status != "Paid"
)
)
这返回了一个哈希值。我用红宝石写了它,但我感觉它可以被优化。
@orders = []
paid_order_status_id = OrderStatusType.find_by_order_status("Paid").id
OrderSession.where('order_status != ?',paid_order_status_id).each { |unpaid_order|
@orders << Order.find(unpaid_order.id)
}
答案 0 :(得分:2)
假设您有以下关联
OrderSession belongs_to Order
Order has_one OrderSession
你试试
@orders = Order.joins(:order_session).where('order_sessions.order_status != ?', paid_order_status_id)