在我们的控制器逻辑中,我们必须为特殊的对象类创建一些列别名(这是许多对象的汇编):
问题是,在尝试搜集时,ransack将忽略别名并尝试转到原始table.column_name。搜索后的SQL:
" SELECT CONCAT_WS(' ',users.first_name,users.middle_name,users.last_name)AS guided_by , COUNT(NULLIF(is_complete = false,true))为complete_count, COUNT(staff_assessments.id)作为employee_count, staff_assessment_groups.name作为名称, MIN(staff_assessments.created_at)as created_at, staff_assessment_groups.id为staff_assessment_group_id, staff_assessment_groups.effective_date as effective_date, staff_assessment_groups.effective_date as review_date,' N / A'如 store_names,true as is_complete,true as is_360_evaluation, \" staff_assessments \" \" assigner_position_id \"从 \" staff_assessments \" INNER JOIN \"职位\" ON \" position \"。\" id \" = \" staff_assessments \"。\" assigner_position_id \" AND \"职位\"。\" deleted_at \" IS NULL INNER JOIN \"员工\"上 \"员工\" \" ID为\" = \"职位\"。\" employee_id \"和 \"员工\" \" deleted_at \" IS NULL INNER JOIN \"用户\"上 \"用户\" \" ID为\" = \"员工\"。\" user_id \"和 \"用户\" \" deleted_at \" IS NULL INNER JOIN \" staff_assessment_groups \" ON \" staff_assessment_groups \"。\" id \" = \" staff_assessments \" \" staff_assessment_group_id \"内部联接 \" survey_types \" ON \" survey_types \"。\" id \" = \" staff_assessments \" \" survey_type_id \"内部联接 \" survey_type_categories_types \" ON \" survey_types \"。\" id \" = \" survey_type_categories_types \" \" survey_type_id \"哪里 \" staff_assessments \" \" position_id \" IN(12024,)AND \" staff_assessments \" \" is_360_evaluation \" =' t'和 \" survey_type_categories_types \" \" survey_type_category_id \" = 3 AND 的 \" staff_assessments \" \" conducted_by \" IN(' Bart Simpson') GROUP BY users.id,\" staff_assessments \"。\" assigner_position_id \", staff_assessment_groups.id订购 staff_assessment_groups.effective_date DESC LIMIT 20 OFFSET 0"
(注意粗体的carry_by - 这是原始的搜索搜索,但它使用的是staff_assessments.name而不是上面的别名'名称'
所以这是我的问题 - 有没有办法告诉ransack使用别名字段?或者有没有办法简单地将记录创建为活动关系
(尝试将对象放到数组中,但我再也无法搜集它了)