我有一个名为option的列,其值为0和1。 我想使用yes / no。
格式化这些数据这是我的查询
SELECT IF(option = 1, 'YES', 'No') AS Options FROM Table1
我可以使用where子句吗?
类似的东西:
MyModel.where(option: 1).format_to_yes
答案 0 :(得分:1)
不是修改数据库层的数据,而是可以轻松地在模型上创建自定义getter,从而简化对字段字符串值的访问:
class MyModel < ApplicationRecord
def option
case read_attribute(:option)
when 1 then 'Yes'
when 0 then 'No'
end
end
end
你也可以使用三元或传统的条件,但我喜欢使用开关,因为没有任何的想法,它很明显是什么。
答案 1 :(得分:0)
我会做类似的事情:
MyModel.pluck(:option).map { |o| o == 1 ? 'YES' : 'No' }
答案 2 :(得分:0)
另一种选择是使用select
,如下所示:
MyModel.select("IF(option = 1, 'YES', 'No') AS Options")
如果您想要所有模型属性(不只是option
),请添加*
:
MyModel.select("*, IF(option = 1, 'YES', 'No') AS option")
请注意,使用AS option
代替AS Options
仅保留一个option
属性。