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

モンキーパッチは必ずしも安全ではありませんが、ご存知のように、Railsで広く使用されています。

オープンクラスはいつでも変更できますが、競合が発生しないように、すべての変更に一意の名前が付いていることを確認してください。

于 2012-05-30T04:44:22.050 に答える