我有一個名爲option的值爲0和1的列。 我想使用yes/no格式化此數據。如何翻譯此查詢以在Rails模型中使用
這是我的查詢
SELECT IF(option = 1, 'YES', 'No') AS Options FROM Table1
我可以做使用WHERE子句呢?
喜歡的東西:
MyModel.where(option: 1).format_to_yes
我有一個名爲option的值爲0和1的列。 我想使用yes/no格式化此數據。如何翻譯此查詢以在Rails模型中使用
這是我的查詢
SELECT IF(option = 1, 'YES', 'No') AS Options FROM Table1
我可以做使用WHERE子句呢?
喜歡的東西:
MyModel.where(option: 1).format_to_yes
我會做這樣的事情:
MyModel.pluck(:option).map { |o| o == 1 ? 'YES' : 'No' }
,而不是在數據庫層修改數據,可以很容易地創建你的模型的自定義吸氣,將簡化訪問字段的字符串值:
class MyModel < ApplicationRecord
def option
case read_attribute(:option)
when 1 then 'Yes'
when 0 then 'No'
end
end
end
您也可以使用三元或三元有條件的,但我喜歡使用開關,因爲如果沒有任何的想法,它是如此明顯地發生了什麼。
在這種情況下,您可以使用散列代替case語句:'{1 =>'是',0 =>'否'}'。 – Ilya
StackLevel問題? '選項'將不斷地調用'選項' – engineersmnky
@AndreyDeineko這是一個三元組,我所處理的。 – coreyward
另一種方法是使用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
屬性。
你想實現什麼? –