每次在比较单个值和比较多个值之间切换时,都必须切换变量和值。
return if params[:controller] == 'users'
return if ['users', 'sessions', 'admin'].include? params[:controller].
以下内容颠倒了Array#include
的语法?
class Object
def in?(arr)
arr.include? self
end
def not_in?(arr)
!(arr.include? self)
end
end
现在你可以说:
return if params[:controller] == 'users'
return if params[:controller].in? ['users', 'sessions', 'admin']
如果不使用Object类,有没有更好/更安全的方法呢?
答案 0 :(得分:1)
为什么不将其他情况反转以匹配?
return if 'users' == params[:controller]
除了排除多值情况外,它还避免意外使用赋值运算符=
而不是等于运算符==
。
答案 1 :(得分:0)
Monkey Patch并不总是安全的,但正如你所知,它在Rails中被广泛使用。
您始终可以修改开放类,但请确保所有更改都具有唯一名称,以免引起冲突。