【发布时间】:2017-07-06 22:24:30
【问题描述】:
我正在构建一个查询,但我需要将发送给模型的参数传递给要在查询中使用的模型,问题是我无法让查询接受选择中的参数,这是我的查询:
def self.reporte_inventario_total(params)
query = select("(SELECT Ruta FROM Rutas WHERE IdRutas = :rutaId or :rutaId = '') AS Ruta,
ISNULL((SELECT S.Stock/PP.PzaXCja AS INT FROM stockhistorico S LEFT JOIN ProductosXPzas PP ON S.Articulo=PP.Producto WHERE S.Articulo=Productos.Clave AND S.RutaId = :rutaId or :rutaId = '' AND fecha = :fechaDiaO or :fechaDiaO = ''),0) AS StockCajas,
ISNULL((SELECT S.Stock%PP.PzaXCja AS INT FROM stockhistorico S LEFT JOIN ProductosXPzas PP ON S.Articulo=PP.Producto WHERE S.Articulo=Productos.Clave AND S.RutaId = :rutaId or :rutaId = '' AND fecha = :fechaDiaO or :fechaDiaO = ''),0) AS StockPiezas,
Productos.Clave, Productos.Producto, Productos.CodBarras,Productos.Sector", ({rutaId: params[:search],fechaDiaO: params[:fechaDiaO]}))
end
这是我得到的错误
unsupported: Hash
【问题讨论】:
-
您的声明中有
{、},这就是导致rails 认为您有Hash的原因。另一件事是您没有?(用于替换数据)。 -
@AlejandroMontilla,感谢您的回答,没错,符号“?”我用括号内的变量替换它。例如,在“.where”中的其他查询中,它对我有用
-
@luis31, select("sqlstatement....", rutaId: params[:search], fechaDia0: params[:fechaDia0]) 我认为这会起作用。也可以参考api.rubyonrails.org/classes/ActiveRecord/Sanitization/…
标签: sql ruby-on-rails ruby ruby-on-rails-4 rails-activerecord