我遇到的问题是散列中的值可能不是正确的数据类型,以便在where子句中成功(如一个示例)。如何将散列值转换为SQL查询的适当数据类型
例如,可以在URL上传递过滤器参数:一些可能是字符串,一些数字,一些布尔值。最后的哈希值将是类似filter_parms:{id:“1”,active:“true”,name:“John”}等等。问题应该是显而易见的:一切都被视为一个字符串。我试图找到一种方法来自动将值强制转换为正确的数据类型(例如“1”=> 1,“true”=> true),而且没有循环和创建编码混乱。
最终目标是能够像这样使用散列:Person.where(filter_parms)。这适用于String字段,但不适用于boolean和int。
我已经尝试使用sanitize_sql_for_conditions,但其输出完全匹配输入数据类型而不作任何修改。
我想有些事情显而易见,我很想念。谢谢你的帮助。
您可以查看'Model.columns'及其'#sql_type's以减少出错的可能性。 –
我当然希望有一种方式可以通过某种由模型驱动的消毒剂驱动价值观。不确定Rails如何处理发布的表单数据。我假设在帖子中有一些内容明确地声明了每个parm的数据类型。 – vicmorrowshead
@muistooshort - 如果只是至少要保持一致和彻底,我将签出Model.columns ... – vicmorrowshead