对于具有值散列值的参数,如何使用“where”?

时间:2015-10-12 19:29:34

标签: ruby-on-rails ruby ruby-on-rails-4.1

在我的数据库中,我有一个带有值哈希值的列。我如何使用在何处获取值?

所以,如果我有这个

<PublicActivity::Activity id: 87, trackable_id: 1, trackable_type: "User", owner_id: 1, owner_type: "User", key: "shout.like", parameters: {:id=>"1187467057945665_1220996764592694", :provider=>"github"}, recipient_id: 1, recipient_type: "User", created_at: "2015-10-12 19:07:16", updated_at: "2015-10-12 19:07:16">

如何找到提供者的所有记录:“github”?我找不到关于如何做到这一点的注释。

我试过这个,但我一直在拿一个空数组

PublicActivity::Activity.where(parameters: 'github')

1 个答案:

答案 0 :(得分:0)

如果您使用PostgreSQL,请使用以下语法搜索Hash serialized:

PublicActivity::Activity.where("parameters -> 'provider' = 'github'")

或者:

PublicActivity::Activity.where("parameters @> 'provider=>github'")

获取参数包含提供者密钥的所有记录:

PublicActivity::Activity.where("parameters ? 'provider'")