SQLite3 :: SQLException:没有这样的列:parameters.user:

时间:2015-10-20 22:23:37

标签: mysql ruby-on-rails ruby ruby-on-rails-4 sqlite

我将跟踪用户的列表保存到数据库,然后尝试获取当前用户是该列表的一部分但仍然获得此异常的记录。

SQLite3::SQLException: no such column: parameters.user: SELECT "activities".* FROM "activities"  WHERE "parameters"."user" = 3

这是db

中的记录
=> #<PublicActivity::Activity id: 107, trackable_id: 16, trackable_type: "Shout", owner_id: 1, owner_type: "User", key: "shout.shout", parameters: {:user=>[3]}, recipient_id: nil, recipient_type: nil, created_at: "2015-10-20 21:44:41", updated_at: "2015-10-20 21:44:41", read: false>

这些是我试过给我的问题。 current_user.id = 3

PublicActivity::Activity.where({'parameters.user' => current_user.id})

PublicActivity::Activity.where(parameters: {user: current_user.id})

因此。如何获取当前用户属于该用户列表的记录?另外,我能在Mysql中使用相同的查询吗?

1 个答案:

答案 0 :(得分:1)

可能看起来像一个愚蠢的问题,但是参数列是否被定义为模型中的序列化列?使用MySQL和(我相信)SQLite等适配器,您无法查询序列化字段。因此,如果您要查询某些内容,则需要将其与序列化字段分开保存。

话虽如此,使用PostgreSQL及其rails适配器,您可以查询序列化字段。

您应该查看此SO questionthis anser