Ruby acts-as-taggable-on gem带租户条件的tag_counts_on方法报错求助
解决acts-as-taggable-on的tag_counts_on条件语法问题
你遇到的问题是因为conditions参数写法有误:不需要手动添加WHERE关键字,直接拼接字符串不仅会导致SQL语法错误,还存在注入风险。
正确的写法可以参考以下几种方式:
使用哈希条件(推荐,简洁安全):
Pizza.tag_counts_on(:topping, conditions: { tenant: '1' })使用参数化查询(适合复杂条件):
Pizza.tag_counts_on(:topping, conditions: ["tenant = ?", '1'])新版本gem可链式调用where:
如果你的acts-as-taggable-on版本较新,也可以用更直观的链式写法:Pizza.tag_counts_on(:topping).where(tenant: '1')
原来的代码里手动加了WHERE,会导致生成的SQL出现重复的WHERE子句,进而引发(Object doesn't support #inspect)错误。换成上面的写法就能解决问题,同时保证代码的安全性和可读性。
内容的提问来源于stack exchange,提问作者GuyWrySmile
相关产品推荐
相关产品推荐

