suf*_*u90 6 activerecord ruby-on-rails ruby-on-rails-3
嗨,您好,
我对has_many的查询有一点问题:通过关联......
我的设置如下:
PurchaseOrderAddressAssignment:
belongs_to :address
belongs_to :purchase_order
Run Code Online (Sandbox Code Playgroud)
地址:
has_many :purchase_order_address_assignments
has_many :purchase_orders, :through => :purchase_order_address_assignments
Run Code Online (Sandbox Code Playgroud)
采购订单:
has_many :purchase_order_address_assignments
has_many :addresses, :through => :purchase_order_address_assignments
Run Code Online (Sandbox Code Playgroud)
我的where子句:
PurchaseOrder.where("addresses.id = 168 and addresses.id = 169").includes(:addresses)
Run Code Online (Sandbox Code Playgroud)
返回0记录......但应该至少有1 ...
PurchaseOrder.where(:baan_id => "KD0005756").first.address_ids
Run Code Online (Sandbox Code Playgroud)
正在返回[168,169,170,327]
......我觉得我太傻了解决这个小问题: - /
谁能告诉我这里我做错了什么?
谢谢,
迈克尔
Azo*_*olo 10
在这种情况下,我可能会做一个自定义查找器方法.
class PurchaseOrder < ActiveRecordBase
def self.with_addresses(*args)
values = args.flatten.uniq
# Note use :joins instead of :includes if you don't
# want the addresses data
includes(:addresses)
where(:addresses => {:id => values})
group("purchase_orders.id")
having("count(ad??dresses.id)=#{values.size}")
end
end
Run Code Online (Sandbox Code Playgroud)
我很确定这应该有用.
这是一个类似的答案,有助于解释查询.
| 归档时间: |
|
| 查看次数: |
5277 次 |
| 最近记录: |