-
Notifications
You must be signed in to change notification settings - Fork 21.9k
Closed
Labels
Description
Here is a call to scoped
:
scoped({:select=>nil,
:joins=>
"JOIN taggings activities_taggings_4ce995f ON activities_taggings_4ce995f.taggable_id = activities.id AND activities_taggings_4ce995f.taggable_type = 'Activity' AND activities_taggings_4ce995f.tag_id = 2 JOIN taggings activities_taggings_58b7315 ON activities_taggings_58b7315.taggable_id = activities.id AND activities_taggings_58b7315.taggable_type = 'Activity' AND activities_taggings_58b7315.tag_id = 3 LEFT OUTER JOIN taggings activities_taggings_group ON activities_taggings_group.taggable_id = activities.id AND activities_taggings_group.taggable_type = 'Activity'",
:group=>
"activities.id, activities.reference_id, activities.reference_type, activities.account_id, activities.owner_id, activities.owner_type, activities.created_at, activities.updated_at, activities.timestamp HAVING COUNT(activities_taggings_group.taggable_id) = 2",
:conditions=>"",
:order=>nil,
:readonly=>false})
Here it the error:
PG::Error: ERROR: syntax error at or near "AS"
LINE 1: ... COUNT(activities_taggings_group.taggable_id) = 2 AS activit...
^
: SELECT COUNT(*) AS count_all, activities.id, activities.reference_id, activities.reference_type, activities.account_id, activities.owner_id, activities.owner_type, activities.created_at, activities.updated_at, activities.timestamp HAVING COUNT(activities_taggings_group.taggable_id) = 2 AS activities_id_activities_reference_id_activities_reference_type FROM "activities" JOIN taggings activities_taggings_4ce995f ON activities_taggings_4ce995f.taggable_id = activities.id AND activities_taggings_4ce995f.taggable_type = 'Activity' AND activities_taggings_4ce995f.tag_id = 2 JOIN taggings activities_taggings_58b7315 ON activities_taggings_58b7315.taggable_id = activities.id AND activities_taggings_58b7315.taggable_type = 'Activity' AND activities_taggings_58b7315.tag_id = 3 LEFT OUTER JOIN taggings activities_taggings_group ON activities_taggings_group.taggable_id = activities.id AND activities_taggings_group.taggable_type = 'Activity' WHERE "activities"."reference_id" = 1 AND "activities"."reference_type" = 'CallList' GROUP BY activities.id, activities.reference_id, activities.reference_type, activities.account_id, activities.owner_id, activities.owner_type, activities.created_at, activities.updated_at, activities.timestamp HAVING COUNT(activities_taggings_group.taggable_id) = 2
Here is the query formatted nicely:
SELECT COUNT(*)
AS count_all, activities.id, activities.reference_id,
activities.reference_type, activities.account_id,
activities.owner_id, activities.owner_type, activities.created_at,
activities.updated_at, activities.timestamp
HAVING COUNT(activities_taggings_group.taggable_id) = 2 AS activities_id_activities_reference_id_activities_reference_type
FROM "activities"
JOIN taggings activities_taggings_a00c683
ON activities_taggings_a00c683.taggable_id = activities.id
AND activities_taggings_a00c683.taggable_type = 'Activity'
AND activities_taggings_a00c683.tag_id = 2
JOIN taggings activities_taggings_0980a52
ON activities_taggings_0980a52.taggable_id = activities.id
AND activities_taggings_0980a52.taggable_type = 'Activity'
AND activities_taggings_0980a52.tag_id = 3
LEFT OUTER JOIN taggings activities_taggings_group
ON activities_taggings_group.taggable_id = activities.id
AND activities_taggings_group.taggable_type = 'Activity'
GROUP BY
activities.id, activities.reference_id, activities.reference_type,
activities.account_id, activities.owner_id, activities.owner_type,
activities.created_at, activities.updated_at, activities.timestamp
HAVING COUNT(activities_taggings_group.taggable_id) = 2
TL;DR: rails adds HAVING COUNT
to the select clause and postgres blows up.