我正在使用select in with query by find_by_sql
:
scope :error_percentage, -> (user_obj) {
find_by_sql("WITH products_boost_sum AS (SELECT *, (CASE WHEN (city_id =#{user_obj.user.city_id || -1}) THEN 1 ELSE 0 END) + (CASE WHEN (country_id =#{user_obj.country_id || -1}) THEN 1 ELSE 0 END) AS boost_sum FROM products) SELECT *, (CASE WHEN boost_sum = 2 THEN 2 ELSE 0 END) AS error_percentage FROM products_boost_sum")
}
这个范围被其他范围使用的问题。所以我需要返回Active_Relation
Object 而不是数组。我检查了ActiveRecord 的QueryMethods,但找不到with
Query 的方法。
如何使用with
Query 返回 ActiveRelation 对象?如果没有它的 queryMethod,那么select
Method 是否可用?