私は0と1の値を持つoptionというカラムを持っています。 このデータをyes/noでフォーマットしたいと思います。このクエリをRailsのモデルで使用する方法
これは
SELECT IF(option = 1, 'YES', 'No') AS Options FROM Table1
私はWHERE句を使用してそれを行うことができ、私のクエリですか?
何かのように:私のようなものだろう
MyModel.where(option: 1).format_to_yes
私は0と1の値を持つoptionというカラムを持っています。 このデータを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
また、3進またはトラを使用することもできます私はスイッチを使うのが好きです。なぜなら、何が起こっているのかがすぐに分かり、がなくても、何でも考えているからです。。
MyModel.select("IF(option = 1, 'YES', 'No') AS Options")
あなたはすべてのモデル属性をしたい場合(単にoption
ない)、*
を追加します:
MyModel.select("*, IF(option = 1, 'YES', 'No') AS option")
お知らせ代わりにAS option
の使用を
この場合、case文の代わりにハッシュを使うことができます: '{1 => 'はい'、0 => 'いいえ'}'。 – Ilya
StackLevelに問題がありますか? 'option'は継続的に' option'を呼び出します – engineersmnky
@AndreyDeinekoそれは私が扱った三元語です。 – coreyward
別の方法としては、このように、select
を使用することですAS Options
には、1つだけoption
属性を保持します。
何を達成したいですか? –