Ransack: ¿Cómo usar el alcance existente?
Al convertir una aplicación de Rails 2 a Rails 3, tengo que reemplazar la gemabúsqueda lógica. Ahora, usando Rails 3.2.8 con la gema.Saquear Quiero construir un formulario de búsqueda que utiliza un alcance existente. Ejemplo:
class Post < ActiveRecord::Base
scope :year, lambda { |year|
where("posts.date BETWEEN '#{year}-01-01' AND '#{year}-12-31'")
}
end
Que yo sepa, esto se puede lograr definiendo una costumbresaqueador. Lamentablemente, no encuentro ninguna documentación sobre esto. Intenté esto en elPost
clase:
ransacker :year,
:formatter => proc {|v|
year(v)
}
Pero esto no funciona:
Post.ransack(:year_eq => 2012).result.to_sql
=> TypeError: Cannot visit ActiveRecord::Relation
Probé algunas variaciones de laransacker
Declaración, pero ninguno de ellos funciona. Necesito algo de ayuda...
ACTUALIZAR: El alcance de arriba es solo un ejemplo. Estoy buscando una manera de utilizar cada ámbito existente dentro de Ransack. En MetaSearch, el predecesor de Ransack, hay una característica llamadasearch_methods
para el uso de ámbitos. Saqueo tieneno hay apoyo para esto fuera de la caja todavía.