использование нескольких параметров области в Rails3 - PullRequest
8 голосов
/ 26 января 2012

В моем приложении на Rails3 есть область действия AR, для которой требуется 3 параметра

Пример: я пытаюсь получить сведения об ошибке для данного модуля между двумя значениями кода

#select * from error_codes where error_module_id=1 and code >0 and code < 100

scope :latest_error_code, lambda{ |module_id, min, max|
    {:conditions => "error_module_id=#{module_id} and code >= #{min} and code <= #{max}"}
} 

в моей консоли я делаю

ErrorCode.latest_error_code(1,0,100)

Но когда я пытаюсь выполнить это, я получаю следующую ошибку

multiple values for a block parameter (3 for 1)

и когда я немного поглядел, оказалось, что область действия AR поддерживает несколько параметров

1 - это правда? (AR doent поддерживает несколько параметров для области видимости) 2 - Есть ли другая альтернатива? 3 - Я здесь что-то не так делаю?

спасибо заранее

1 Ответ

10 голосов
/ 26 января 2012

Из Руководства по интерфейсу запросов Active Record :

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

Так что вы, вероятно, хотите что-то более похожее на это:

def self.latest_error_code(module_id, min, max)
    where(
        'error_module_id = :module_id and code between :min and :max',
        :module_id => module_id, :min => min, :max => max
    )
} 
...