[英]In Rails, how can I get a string from a boolean?
我正在使用 Rails 5。我看到很多关于从字符串中获取 boolean 的帖子,但我想 go 反向路径。 我想知道是否有比这更优雅的方式......
my_boolean_value ? "true" : "false"
您可以使用to_s
将true
或false
转换为字符串。 但是,如果您的值与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.