我在名为properties
的users
表中有hstore
列。将postgres hstore sql转换为Arel
如何将where条件中的静态sql字符串转换为aRel语法?
User.where("properties -> 'is_robber' = 'true'") #=> ...some users
我曾尝试:
ut = User.arel_table
condition = ut["properties -> 'is_robber'"].eq('true')
User.where(condition) #=> throws pg error
和产生错误的SQL:
SELECT "users".* FROM "users" WHERE "users"."properties -> 'is_robber'" = 'true'
比起我所需要的:
SELECT "users".* FROM "users" WHERE "users".properties -> 'is_robber' = 'true'
这不适用于arel 6.0.3,正确的方法是: hstore_key = Arel :: Nodes :: InfixOperation.new(“ - >”,ut [:properties],Arel ::节点:: SqlLiteral.new( “ 'is_robber'”)) – fabi