如何将对象存在转换为整数?

时间:2013-07-17 10:40:28

标签: ruby-on-rails

我想做类似的事情:

@count = @product.possible_loans.count + @product.current_loan.present?

但是present不是整数,它是布尔值。

如何将true转换为1,将false转换为0?

4 个答案:

答案 0 :(得分:2)

你可以简单地使用Ruby的三元运算符,就像这样

@product.current_loan.present? ? 1 : 0

因此,在您的情况下

@count = @product.possible_loans.count + (@product.current_loan.present? ? 1 : 0)

答案 1 :(得分:1)

试试这个

@count = @product.possible_loans.count + (@product.current_loan.present? ? 1 : 0)

答案 2 :(得分:1)

你让这变得复杂。

@count = @product.possible_loans.count
@count += 1 if @product.current_loan.present?

这更具可读性。

答案 3 :(得分:1)

davidb给出的答案似乎对人类来说最具可读性,但是如果你想要将true或false转换为1或0,你可以利用Ruby中'true'对象的object_id是2和'false'object_id是0.所以

@count = @product.possible_loans.count+@product.current_loan.present?.object_id/2

将按您的意愿工作:0/2将转换为0(假)和2/2转换为1(真)。但这会让其他人的操作变得有点棘手。

注意nil对象有object_id 4,所以不要试图取消'present?' - 你会得到错误的结果:)