1

每次在比较单个值与比较多个值之间切换时,都必须切换变量和值。

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 类的情况下,是否有更好/更安全的方法来做到这一点?

4

2 回答 2

1

为什么不直接反转另一种情况以匹配?

return if 'users' == params[:controller]

除了与多值情况对齐外,它还避免了意外使用赋值运算符=而不是相等运算符==

于 2012-05-30T04:50:51.257 回答
0

Monkey Patch 并不总是安全的,但如您所知,它在 Rails 中被广泛使用。

您始终可以修改开放类,但请确保所有更改都具有唯一的名称,以免引起冲突。

于 2012-05-30T04:44:22.050 回答