我不知道为什么这两段代码在 Ruby 1.8.7 中表现不同,因为其中一段似乎是另一段的单行版本。
第一段代码(它应该可以正常工作):
if @type.present?
type = @type
orders = Order.where{type.eq(type)}
end
单行版本(它根本不起作用,没有错误但似乎也没有执行):
orders = Order.where{type.eq(type)} if (type = @type).present?
注意:我使用的是 squeel gem,这就是块遵循 where 方法的原因。此外,变量类型必须捕获实例变量@type,因为块内的执行上下文会发生变化,并且实例变量不会在主上下文和块上下文之间共享。
注意 2:出于遗留原因,我必须使用 Ruby 1.8.7。
任何想法?谢谢!