簡體   English   中英

在 Rails 中,如何從 boolean 中獲取字符串?

[英]In Rails, how can I get a string from a boolean?

我正在使用 Rails 5。我看到很多關於從字符串中獲取 boolean 的帖子,但我想 go 反向路徑。 我想知道是否有比這更優雅的方式......

my_boolean_value ? "true" : "false"

您可以使用to_struefalse轉換為字符串。 但是,如果您的值與nil不同,您只需要這樣做。 .nil? 方法將返回 true 或 false(如果變量為 nil 或不是)。 感嘆號否定斷言。 在這種情況下,如果它不是 nil,則將調用to_s方法。

my_boolean_value.to_s if !my_boolean_value.nil?

您可以使用my_boolean_value.to_s 基本上它將布爾值轉換為字符串。

你也可以做"#{my_boolean_value}"

注意:如果my_boolean_value可以是.nil? 或除true/false之外的任何其他內容,那么您在問題中的解決方案是最好和最簡單的方法。 如果您不想使用三元運算符,也可以使用以下方式,

(.!my_boolean_value).to_s

但是我仍然認為從可讀性和可維護性的角度來看,您應該使用問題中給出的解決方案。 原因是,如果您不發表評論,您正在做雙重否定可能會令人困惑。

嘗試

ActiveRecord::Type::Boolean.new.type_cast_from_user(my_boolean_value).to_s

更優雅的方式? 沒有。更實用的方法? 也許。

# in app/helpers/application_helper.rb
module ApplicationHelper
  def boolean_label_for(value)
    BooleanLabel.to_s(value)
  end
end 

# in lib/boolean_label.rb
class BooleanLabel
  def self.to_s(value)
    new(value).to_s
  end

  def initialize(value)
    @value = value 
  end 

  def to_s
    if @value 
      "true"
    elsif @value.nil?
      "i am nil — false"
    elsif @value
      "false"
    end
  end 
end 

它並不過分性感,你可以說它不必要地復雜,但如果你發現自己經常執行這個檢查,你應該把它干掉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM