rails5.2です。
初歩的な質問で恐縮です。
boolean型の正しい判定方法が分からずにいます。
あるモデルのstatusカラムをboolean型で定義しました。
ruby
1t.boolean :status, default: true, null: false
ビュー側で@statusが「trueかfalseか」の判定を行いたいのですがうまくいきません。
コントローラで以下のように取得し、
ruby
1@status = RoomStatus.select('status').find_by(room_id: params[:id], user_id: current_user)
ビュー側で最初以下のように判定しました。
ruby
1<% if @status %>
これだと@statusがtrueでもfalseどちらの時でもtrueに入ってしまうため、
次に以下を試しました。
ruby
1<% if @status == true %>
が、これだとどちらの時でもfalseに入ってしまいました。
そこでビュー側で画面上にデバッグしてみました。
ruby
1<%= @status %>
trueかfalseが表示されるのかなと思ったら、以下のように表示されました。
#<RoomStatus:0x00007f4298c85f78>
次にDB型にちゃんと入ってるの確認しました。
rails cで statusに値が入ってるか確認しました。
ちゃんと入ってます。
rails dbconsoleで確認すると、実際のDBには、"t" や "f"で入ってました。
なので下のようにしましたが、
ruby
1<% if @status == 't'%>
これだとどちらの時でもfalseに入ってしまいました。
ruby on railsでは、通常どのように判定するのでしょうか?
そもそもboolean型を使わず、数値型などを使うべきだったのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/21 09:31