如何翻译此查询以在Rails模型中使用

时间:2017-05-02 14:32:27

标签: ruby-on-rails ruby

我有一个名为option的列,其值为0和1。 我想使用yes / no。

格式化这些数据

这是我的查询

SELECT IF(option = 1, 'YES', 'No') AS Options FROM Table1

我可以使用where子句吗?

类似的东西:

MyModel.where(option: 1).format_to_yes

3 个答案:

答案 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属性。