Ruby on rails RubyonRails 5.2-ArgumentError:传递要在:if和:除非条件选项中计算的字符串不受支持

Ruby on rails RubyonRails 5.2-ArgumentError:传递要在:if和:除非条件选项中计算的字符串不受支持,ruby-on-rails,ruby,ruby-on-rails-5,ruby-on-rails-5.2,Ruby On Rails,Ruby,Ruby On Rails 5,Ruby On Rails 5.2,我将一个旧的ruby on rails应用程序更新到rails 5.2.4,收到以下错误: ArgumentError:传递要在:if和:中计算的字符串,除非不支持条件选项。为实例方法或lambda、proc或block传递符号。 users.rb模型的错误出现在包含以下内容的行上: if: 'self.subscription.blank?' 是否可以将该行替换为: if: lambda {puts 'self.subscription.blank?'} 我做了更改,看起来效果不错,我是r

我将一个旧的ruby on rails应用程序更新到rails 5.2.4,收到以下错误:

ArgumentError:传递要在:if和:中计算的字符串,除非不支持条件选项。为实例方法或lambda、proc或block传递符号。

users.rb模型的错误出现在包含以下内容的行上:

if: 'self.subscription.blank?'
是否可以将该行替换为:

if: lambda {puts 'self.subscription.blank?'}
我做了更改,看起来效果不错,我是rails新手,请告诉我在这种情况下的最佳实践。我使用了lambda,但我不确定我的代码是否正确,或者它是否是最佳解决方案

非常感谢

if: lambda {puts 'self.subscription.blank?'}
由于
put
返回
nil
,且nil为falsy,因此该条件永远不会在此处运行

你真正想要的是:

if: lambda { subscription.blank? }
# or the more common short-hand
if: ->{ subscription.blank? }

你是对的,在我的测试中,lambda返回零,这就是我问的原因。谢谢,我会使用“普通速记”版本,因为它更干净。