新手问题 有关 hstore 读取的问题

cassiuschen · 2014年05月01日 · 最后由 cassiuschen 回复于 2014年05月01日 · 1574 次阅读

使用Postgresqlhstore可以近似想成存入 JSON,不过有个问题, 比如对于 User 有一个hstore类型的contact

2.1.1p76 :002 > u = User.all.first
  User Load (11.2ms)  SELECT  "users".* FROM "users"   ORDER BY "users"."id" ASC LIMIT 1
 => #<User id: 8,  contact: {"qq"=>"**QQ**", "weibo"=>"", "renren"=>"", "wechat"=>""}> 
2.1.1p76 :003 > u.contact[:qq]
 => nil 
2.1.1p76 :004 > u.contact["qq"]
 => "**QQ**" 

不是说 Symbol 和 String 大体上就是是否在使用时新建对象么?为何在这样的查询时就会有问题发生?

HStore 内部实现只支持用 String 作为 key。

Ruby 的 Hash 本来就认为 symbol 和 string 是不一样的,在 Rails 里面 params 不分 symbol 和 string 是做了特殊处理。

#3 楼 @Rei 明白了……那看来还是需要避免这个问题……

需要 登录 后方可回复, 如果你还没有账号请 注册新账号