8

en mi Rails3 aplicación que tienen alcance AR que requiere 3 parámetrosutilizando múltiples params alcance en Rails3

Ex: Estoy tratando de obtener una información de error para un módulo dado entre dos valores de código

#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}"} 
} 

en mi consola hago

ErrorCode.latest_error_code(1,0,100) 

Pero cuando trato de ejecutar esta, estoy recibiendo el siguiente error

multiple values for a block parameter (3 for 1) 

y cuando he hecho un poco Goggling, parece ser que alcance AR doent soporta múltiples parámetros

1 - ¿es cierto? (AR no admite varios parámetros para el alcance) 2 - ¿Hay alguna otra alternativa? 3 - ¿Estoy haciendo algo mal aquí?

gracias de antemano

+0

I * * creen esto se encuentra trabajando con Ruby 1.9+. Funciona bien en Ruby 2.2. –

Respuesta

10

Desde el Active Record Query Interface Guide:

Usando un método de clase es la manera preferida para aceptar los argumentos de los ámbitos.

Así que es probable que quieren algo más parecido a esto:

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 
    ) 
} 
+0

esto funciona perfectamente, muchas gracias – sameera207