我有以下SQL
SELECT a,
CASE WHEN a=1 THEN 'one'
WHEN a=2 THEN 'two'
ELSE 'other'
END
FROM test;
有了活动记录,我尝试构建像
这样的查询 @tests = Test.find_by_sql(
"SELECT a,
CASE WHEN a=1 THEN 'one'
WHEN a=2 THEN 'two'
ELSE 'other'
END
FROM test")
但是没有返回所需的结果集!
[#<Test a: 1>, #<Test a: 2>, #<Test a: 3>, ......]
任何帮助都非常感激。
答案 0 :(得分:2)
在AR中没有直接的方法,所以你必须在case..when
部分写,但至少这更接近Rails方式。
tests = Test.all.select(%(
a,
(CASE WHEN a=1 THEN 'one'
WHEN a=2 THEN 'two'
ELSE 'other' END) as a_text
))
tests.first.a_text #= 'one' or 'two'