Сокращение для доступа к значениям из хэша params - PullRequest
1 голос
/ 09 августа 2011

Я часто чувствую необходимость доступа к отдельным парам ключ-значение из хэша 'params', как если бы они были локальными переменными.

Я считаю, что вместо использования записи params используются локальные переменные каждый раз, облегчает понимание моего кода.

Так что вместо использования значений вроде params[:first_variable] я бы сделал что-то вроде:

first_var  = params[:first_variable]

second_var = params[:second_variable]
... 

и в моей программе я бы использовал эту короткую запись вместописать params[:first_var] каждый раз.

Проблема в том, что размер моих функций может значительно возрасти, когда у меня много значений в параметрах.

Есть ли лучший способ ссылкиобъекты из 'params' как локальные переменные в моей функции?

1 Ответ

2 голосов
/ 09 августа 2011

Вы можете переопределить method_missing, в каком классе вы хотите эту функциональность. Если вы это сделаете, помните кардинальные правила method_missing - если вы не можете с этим справиться, позвоните, передайте его (super); и обновите respond_to? параллельно.

Что-то вроде этого, возможно.

class Foo
  def method_missing(name, *args, &block)
    if params.include? name
      params[:name]
    else
      super
    end
  end

  def respond_to?(name)
    if params.include? name
      true
    else
      super
    end
  end
end

Помните, что Rails уже интенсивно использует method_missing, поэтому либо переопределите его только для своих собственных классов, либо создайте псевдоним существующей версии и вызовите его вместо super, когда вы не обрабатываете.

...