我有两个模型,Owner
和Dog
。狗属于业主,业主有很多狗。
我可以查询所有者并使用most_food_needed_for_pet
对其进行注释,这是food_needed
的最Dog
的{{1}}列吗?我知道我可以使用多个查询完成此操作,但我应该只使用lifespan
进行一次查询。
我最初的尝试是
Arel
但是,这会错误地为每个所有者添加最大Owner.
joins(:dogs).
select(Dog.arel_table[:food_needed].as('most_food_needed_for_pet')).
select(Dog.arel_table[:lifespan].maximum).
group('dogs.owner_id')
和数据库中第一个lifespan
的{{1}},而不是最长的food_needed
。
答案 0 :(得分:0)
d = Dog.arel_table
o = Owner.arel_table
Owner.
select( o[Arel.star], d[:lifespan], d[:food_needed].as('most_food_needed_for_pet')).
joins(:dogs).
group(:owner_id).
having( dogs: { lifespan: d[:lifespan].maximum } )
[编辑以便在字段重叠时移除裸*