可以在Ruby中的Object类中添加一个方便的方法吗?

时间:2012-05-30 04:25:58

标签: ruby-on-rails ruby

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

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类,有没有更好/更安全的方法呢?

2 个答案:

答案 0 :(得分:1)

为什么不将其他情况反转以匹配?

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

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

答案 1 :(得分:0)

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

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