주문에는 많은 LineItem이 있습니다. LineItem에는 'car'와 같은 이름이 있습니다. 일부 패턴과 일치하는 이름을 가진 광고 항목이있는 모든 광고 주문을 찾고 싶습니다.쿼리에 관계가 포함 된 경우 포함 된 테이블에서 패턴 일치를 사용하려면 어떻게해야합니까?
예를 들어 LineItem.where('name ~* :pat', pat: 'car')
을 할 수 있음을 알고 있습니다.
Order.where.not(state: "cancelled")
.includes(:line_items)
.where(line_items: { name: "car" })
나는 두 개의 쿼리를 결합하기위한 구문에 대한 확실하지 않다 할 수있는 것을 알고있다. 내가 상상하는 것,
Orders.where.not(state: 'cancelled')
.includes(:line_items)
.where(line_items: ['name ~* :pat', pat: 'car'])
이것은 매우 까다 롭습니다.
참고 : 마지막으로 레일스 activerecord에 대한 질문이 있었지만이 솔루션의 일부는 SQL을 검사하는 것이 었습니다. 그러나이 경우 include 메소드를 사용하면 무서운 SQL이 발생합니다. 좋은 결과를 얻으려면 레일즈 콘솔에
Order.includes(:line_items).where(line_item: { name: "car"}).to_sql
과 같이 시도해보십시오!
참고 :이 질문의 제목과 관련하여 도움이 필요합니다. 이런 당신이 그것을 해시 통과 할 때에만 작동합니다 사용
rails guide에서 언급 한 바와 같이