хэш условий портирования для использования в новом рельсе 3 интерфейс запроса активной записи - PullRequest
0 голосов
/ 15 июня 2011

Я обновляю приложение Rails 2.3.5 до Rails 3. Я не реализовал приложение, я просто обновляю его.Я обнаружил, что разработчик использовал хэш запроса таким образом, что его трудно изменить, не затрагивая много файлов, которых я хочу избежать.

class A
    def method_1
        AnObject.find(:all, :conditions => {:param_1 => @param_1}.merge(specific_params))
    end

    def specific_params
       raise NoMethodError, "Subclasses must implement this method", "specific_params"
    end
end

class B < A
    def specific_params
        {param_B1 => false, param_B2 => true}
    end
end

Есть много классов, которые наследуются от A. Iнужно преобразовать запрос в классе A в Rails 3. Может кто-нибудь предложить лучший способ перенести его в Rails 3 без изменения классов, которые наследуют от A, реализуют метод specific_params.

Спасибо.

1 Ответ

0 голосов
/ 15 июня 2011
AnObject.find(:all, :conditions => {:param_1 => @param_1}.merge(specific_params))

будет работать в Rails 3.

Или вы можете изменить его где:

AnObject.where({:param_1 => @param_1}.merge(specific_params))
...