kon*_*ung 6 ruby ruby-on-rails
我试图找出是否有一种简单的方法来执行以下操作,将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'
Run Code Online (Sandbox Code Playgroud)
在顶部,他们可以使用.
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
Run Code Online (Sandbox Code Playgroud)
然后它使"人类消费"和"机器消费"的呈现变得true非常容易:
> true.humanize #=> Yes
> true.to_i #=> 1
> false.humanize #=> No
> false.to_i #=> 0
Run Code Online (Sandbox Code Playgroud)