2017-05-02 51 views
-3

我有一個名爲option的值爲0和1的列。 我想使用yes/no格式化此數據。如何翻譯此查詢以在Rails模型中使用

這是我的查詢

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

我可以做使用WHERE子句呢?

喜歡的東西:

MyModel.where(option: 1).format_to_yes 
+2

你想實現什麼? –

回答

0

我會做這樣的事情:

MyModel.pluck(:option).map { |o| o == 1 ? 'YES' : 'No' } 
1

,而不是在數據庫層修改數據,可以很容易地創建你的模型的自定義吸氣,將簡化訪問字段的字符串值:

class MyModel < ApplicationRecord 
    def option 
    case read_attribute(:option) 
    when 1 then 'Yes' 
    when 0 then 'No' 
    end 
    end 
end 

您也可以使用三元或三元有條件的,但我喜歡使用開關,因爲如果沒有任何的想法,它是如此明顯地發生了什麼。

+0

在這種情況下,您可以使用散列代替case語句:'{1 =>'是',0 =>'否'}'。 – Ilya

+1

StackLevel問題? '選項'將不斷地調用'選項' – engineersmnky

+0

@AndreyDeineko這是一個三元組,我所處理的。 – coreyward

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屬性。