Ruby on rails 如何将对象状态转换为整数?

Ruby on rails 如何将对象状态转换为整数?,ruby-on-rails,Ruby On Rails,我想做一些类似的事情: @count=@product.mablue\u loans.count+@product.current\u loan.present? 但是present不是整数,而是布尔值 如何将true转换为1,将false转换为0?您可以简单地使用Ruby的三元运算符,如下所示 @product.current_loan.present? ? 1 : 0 因此,在你的情况下 @count = @product.possible_loans.count + (@product

我想做一些类似的事情:

@count=@product.mablue\u loans.count+@product.current\u loan.present?
但是
present
不是整数,而是布尔值


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

您可以简单地使用Ruby的三元运算符,如下所示

@product.current_loan.present? ? 1 : 0
因此,在你的情况下

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

您可以简单地使用Ruby的三元运算符,如下所示

@product.current_loan.present? ? 1 : 0
因此,在你的情况下

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

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

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

你把这件事搞得很复杂

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

这更具可读性。

您将其变得复杂

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

这更具可读性。

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(false)和2/2转换为1(true)。但对其他人来说,这会让手术变得有点棘手


请注意,nil object的object_id为4,因此不要尝试取消“present”(当前)–您会得到错误的结果:)

davidb给出的答案似乎对人来说是最可读的,但如果您想将true或false转换为1或0,您可以利用Ruby中“true”对象的object_id为2而“false”对象的id为0这一事实。所以

@count = @product.possible_loans.count+@product.current_loan.present?.object_id/2
将按您的需要工作:0/2将转换为0(false)和2/2转换为1(true)。但对其他人来说,这会让手术变得有点棘手

请注意,nil对象具有对象_id 4,因此不要尝试取消“present”—您将得到错误的结果:)