使用rails查询Hstore和nil

时间:2014-05-26 18:28:56

标签: ruby-on-rails postgresql ruby-on-rails-4 hstore

我有一个名为Profile

的hstore列的模型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)")

0 个答案:

没有答案