我有一个名为Profile
meta_data
这是一个例子:
{"bio" => "", username => nil, "location" => "earth, "gender" => "male}
当我查询时:
Profile.where("meta_data @> hstore('gender', 'male')")
效果很好!
但现在我需要查询用户名nil
以及当它全部失败时导致它在技术上不是字符串?
Profile.where("meta_data @> hstore('username', 'nil')")
#<ActiveRecord::Relation []>
Profile.where("meta_data @> hstore('username', nil)")
PG::UndefinedColumn: ERROR: column "nil" does not exist
LINE 1: ...ROM "profiles" WHERE (meta_data @> hstore('username', nil))
^
: SELECT "profiles".* FROM "profiles" WHERE (meta_data @> hstore('username', nil))
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column "nil" does not exist
LINE 1: ...ROM "profiles" WHERE (meta_data @> hstore('username', nil))
^
: SELECT "profiles".* FROM "profiles" WHERE (meta_data @> hstore('username', nil))
想查询那些不是nil的内容。
谢谢!
更新
回答了我自己的问题,必须使用null而不是nil,ActiveModel只输出它为nil但它在数据库中为null
Profile.where("meta_data @> hstore('username', null)")