首页 > 解决方案 > Rails 实例变量未在控制器的“或”内分配

问题描述

Rails 5.2 项目;在控制器中,我有:

  def show
    binding.pry
    @correct_user = false
    some_method or (@correct_user=correct_user) or return
    # -> here the value of @correct_user is false
    # some other code here
  end

some_method评估为假;correct_user方法在这里计算为真;return没有达到,但在那个@correct_uservar 值之后就是false为什么会这样;

我在“rails 控制台”中进行了另一项测试:

irb(main):001:0> def f
irb(main):002:1>   return false
irb(main):003:1> end
=> :f
irb(main):004:0> def a
irb(main):005:1>   return true
irb(main):006:1> end
=> :a
irb(main):007:0> @t=false
=> false
irb(main):008:0> f or (@t=a) or return
=> true
irb(main):009:0> @t
=> true

所以这可以按预期工作

标签: ruby-on-railsruby

解决方案


推荐阅读