【发布时间】:2017-04-21 19:11:08
【问题描述】:
我在模型中有这个 if 条件
if column_value = 'Y'
Abc.new('test', latest.column_1, latest.column_2, latest.column_3)
else
Abc.new('test2', latest.column_1, latest.column_2, latest.column_3)
end
end
column_value 不是变量。我正在使用活动记录中存在的列值。
为什么我收到 lint 错误 Useless assignment to variable - column
编辑:
尝试了 column_value == 'Y' 但随后出现错误 undefined variable or method column_value
也试过 self.column_value 得到 lint 错误redundant self detected
【问题讨论】:
-
=是赋值,并且由于'Y'为真, if 块将始终运行,而 else 块将永远不会运行。==是一个比较运算符,将是有条件的。基本上你说的是if true # do something而不是if something == true #do something -
尝试了 column == 'Y' 但随后得到错误未定义的局部变量或方法列。奇怪的是,当我有 = 它成功运行但 lint 抛出错误
-
您可以使用
column_value = 'Y',但是,如前所述,您的else永远不会运行。而且,即使您确实使用了该逻辑,它也会让其他必须在以后维护代码的人感到非常困惑,所以不要这样做。你没有给我们足够的信息来解决这个问题。阅读“minimal reproducible example”。 -
你确定你有一个检索“column_value”的方法,因为你的代码很模糊,几乎不可能从这里得到帮助。此外,并非所有的 linting 都可以节省您尝试使用 RuboCop 编写 rspecs 规范(显然我的块太长:))。 根据您在下面的评论,此示例不正确,因为您没有解释这是在班级级别,或者答案应该是(您不能这样做并且您正在使用作业)
-
修复了它。请在下面查看我的答案。抱歉没有提供所有细节
标签: ruby ruby-on-rails-4 if-statement