我试图找出是否有一种简单的方法来执行以下操作,将to_i方法添加到TrueClass/FalseClass.
这是一个两难的问题:我的rails应用程序中有一个布尔字段 - 显然在mysql中存储为Tinyint.然而 - 我需要生成基于数据的XML在MySQL并将其发送给客户 - 有SOAP服务需要领域的问题有0或1,因为此字段的值.因此,在XML生成的时间,我需要我的假转换为0,我真为1(这是他们是如何存储在数据库中).由于True&False缺少to_i方法,我可以编写一些if语句,根据true/false状态生成1或0.但是,我有大约10个这些指标和创建,如果/其他每个不是很干.那你建议我做什么?
或者我可以在True/False类中添加to_i方法.但是我不知道我应该在rails应用程序中将它放在哪里?只是在这个特定的模型或其他地方?
你可以创建一个文件,例如lib/boolean_ints.rb
和猴子修补to_i
方法TrueClass
和FalseClass
,如你所说.然后,在您需要使用该to_i
方法的模型或控制器中,您可以放置
require 'boolean_ints'
在顶部,他们可以使用.
humanize
和扩展TrueClass和FalseClass to_i
.这出现在我的大多数项目中,所以我使用初始化程序(如果你使用的是Rails)将这两个有用的方法添加到每个类中,如下所示:
配置/初始化/ true_and_false.rb
class TrueClass def humanize 'Yes' end def to_i 1 end end class FalseClass def humanize 'No' end def to_i 0 end end
然后它使"人类消费"和"机器消费"的呈现变得true
非常容易:
> true.humanize #=> Yes > true.to_i #=> 1 > false.humanize #=> No > false.to_i #=> 0