我在Rails应用程序中编写用户定义的视图。我有一个名为uvcondtions
的表,其中包含列(field_name),条件(条件),并与(ucompare)信息进行比较。
例如:
Field_name = description
ucondition = like
ucompare =卡车
变成where table_name.description like "Truck"
它适用于大多数PG SQL条件。 in
条件无效。
如果我在uvconditions记录中有这个:
field_name = id
uvcondition = in
uvcompare =(1,3)
我收到此错误:
PG ::错误:错误:语法错误在或附近" '(1,3)' " 第1行:... sts"在哪里" worequests"。" tenant_id" = 1 AND(id在'(1,3)')
这是创建where子句的语句:
uvc = uvcondition.ucompare if uvcondition.ucondition == 'in'
@worequests = Worequest.where( uvcondition.field_name + " " + uvcondition.ucondition + " ?", uvc )
有没有办法删除uvc
??
感谢您的帮助!
答案 0 :(得分:2)
发生错误,因为 uvc
实际上是一个字符串:
uvc = "(1,3)"
在SQL查询中使用它之前,误导Rails清理此字符串(puttin额外的引号)。而不是这种行为,Rails应该创建一个由数组创建的可能值列表。
让uvc
成为一个Ruby数组,可以解决你的问题:
uvc = [1, 3]
@worequests = Worequest.where(uvcondition.field_name + " " + uvcondition.ucondition + " ?", uvc)