Ruby on rails 如何定义一个可以被视为布尔值但具有方法的结果类

Ruby on rails 如何定义一个可以被视为布尔值但具有方法的结果类,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在为身份验证模块添加更多功能,由于某些原因,我无法更改接口,因此结果应在某些if..else条件下使用 我想我可能需要定义一个Result类并将其实例作为Result返回,这个结果可以被视为布尔值,这样使用这个方法的原始项目就不会受到影响,我可以通过调用这个方法获得进一步的信息(例如:validate的原因是false)。我认为下面的方法可以通过返回true或false来匹配我的目标 任何想法都是好主意,谢谢 在Ruby中只有false和nil是假值,结果类的实例肯定是真的 true和fal

我正在为身份验证模块添加更多功能,由于某些原因,我无法更改接口,因此结果应在某些if..else条件下使用

我想我可能需要定义一个Result类并将其实例作为Result返回,这个结果可以被视为布尔值,这样使用这个方法的原始项目就不会受到影响,我可以通过调用这个方法获得进一步的信息(例如:validate的原因是false)。我认为下面的方法可以通过返回
true
false来匹配我的目标

任何想法都是好主意,谢谢

  • 在Ruby中只有
    false
    nil
    是假值,结果类的实例肯定是真的

  • true
    false
    在Ruby中是唯一的。它们分别是
    TrueClass
    FalseClass
    的唯一实例。在它们上定义单例方法将影响使用
    true
    false
    的所有其他位置。这可能适用于单线程程序,但可能不适用于多线程程序

  • 如果您不能更改的身份验证API只接受布尔值,那么我认为您没有好的方法来添加进一步的特性,同时保持向后兼容性