이 쿼리를 수행하는 방법과 활성 레코드에서 arel을 사용하는 다른 방법을 파악하는 데 시간이 너무 많이 걸립니다.활성 레코드에 arel을 사용하여 관계를 계산합니다.
표면에select users.id,
users.name,
maps.count as map_count,
from users
left join (select user_id, count(map_id) as count from maps_users group by user_id) maps on users.id = maps.user_id
, 그것은 (http://magicscalingsprinkles.wordpress.com/2010/01/28/why-i-wrote-arel/) 여기에 단지 닉의 예를 들면 다음과 같습니다
photo_counts = photos.
group(photos[:user_id]).
project(photos[:user_id], photos[:id].count)
users.join(photo_counts).on(users[:id].eq(photo_counts[:user_id]))
하지만 활성 레코드를 사용하는 레일에서 작동하지 않습니다. 나는 동등한 이런 식으로 뭔가해야한다고 생각하지만, 오류가 밖으로 :(
maps = Map.arel_table
map_counts = Map.group(maps[:owner_id]).
select(maps[:owner_id]).
select(maps[:id].count.as("map_count"))
users = User.joins(map_counts).on(User.arel_table[:id].eq(map_counts[:map_count]))
을 수행하는 방법?
어떤 오류가 발생합니까? 우리가 * 왜 * 오류가 있는지 알지 못한다면 정말 도움이되지 않습니다. –