Chào bạn,Rails 3 - mệnh đề where trên has_many thông qua hiệp hội
Tôi có một vấn đề nhỏ với một truy vấn nơi trên has_many: thông qua hiệp hội ...
thiết lập của tôi là như sau:
PurchaseOrderAddressAssignment:
belongs_to :address
belongs_to :purchase_order
Địa chỉ:
has_many :purchase_order_address_assignments
has_many :purchase_orders, :through => :purchase_order_address_assignments
PurchaseOrder:
has_many :purchase_order_address_assignments
has_many :addresses, :through => :purchase_order_address_assignments
My mệnh đề where:
PurchaseOrder.where("addresses.id = 168 and addresses.id = 169").includes(:addresses)
là trở về 0 ghi ... nhưng không nên có ít nhất 1. ..
PurchaseOrder.where(:baan_id => "KD0005756").first.address_ids
là trở về [168, 169, 170, 327]
... Tôi nghĩ rằng tôi quá ngu ngốc để giải quyết vấn đề này chút: -/
Ai đó có thể cho tôi biết những gì tôi làm sai ở đây?
Thx,
Michael
Hãy thử thay đổi 'PurchaseOrder.where (" addresses.id = 168 và addresses.id = 169 ") này bao gồm (: địa chỉ)' thành 'PurchaseOrder.where (addresses.id => [168,169]). : địa chỉ) 'và xem điều gì xảy ra. – ScottJShea
thx cho câu trả lời của bạn. Tôi quên nói rằng tôi đã thử mệnh đề where với IN (...). Vấn đề ở đây là nếu tôi đang sử dụng ở đâu ("addresses.id IN (n1, n2, n3)") truy vấn sẽ trả về 1000 PurchaseOrders ... Trong trường hợp của tôi chỉ có 1 PurchaseOrder với address_ids = [168, 169, 327] – sufu90
'addresses.id => [168,169]' chỉ giới hạn ở hai giá trị đó. – ScottJShea