Привет там,Rails 3 - где пункт о has_many через ассоциацию
У меня есть небольшая проблема с где запросом на has_many: через ассоциацию ...
Моя установка выглядит следующим образом:
PurchaseOrderAddressAssignment:
belongs_to :address
belongs_to :purchase_order
Адрес:
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
Мой раздел где:
PurchaseOrder.where("addresses.id = 168 and addresses.id = 169").includes(:addresses)
возвращает 0 записей ... но должно быть не менее 1. ..
PurchaseOrder.where(:baan_id => "KD0005756").first.address_ids
возвращается [168, 169, 170, 327]
... Я думаю, что я слишком глуп, чтобы решить эту маленькую проблему: -/
Может кто-нибудь сказать мне, что я делаете неправильно здесь?
Thx,
Майкл
Попытайтесь изменить это 'PurchaseOrder.where (" addresses.id = 168 и addresses.id = 169 ") .Она включает (: адреса)' в 'PurchaseOrder.where (addresses.id => [168,169]). : адреса) 'и посмотреть, что произойдет. – ScottJShea
thx для вашего ответа. Я забыл сказать, что я уже пробовал предложение where с IN (...). Проблема в том, что если я использую where ("addresses.id IN (n1, n2, n3)"), запрос вернет около 1000 BuyOrders ... В моем сценарии есть только 1 PurchaseOrder с address_ids = [168, 169, 327] – sufu90
'addresses.id => [168,169]' должен ограничивать только эти два. – ScottJShea