我将跟踪用户的列表保存到数据库,然后尝试获取当前用户是该列表的一部分但仍然获得此异常的记录。
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中使用相同的查询吗?
答案 0 :(得分:1)
可能看起来像一个愚蠢的问题,但是参数列是否被定义为模型中的序列化列?使用MySQL和(我相信)SQLite等适配器,您无法查询序列化字段。因此,如果您要查询某些内容,则需要将其与序列化字段分开保存。
话虽如此,使用PostgreSQL及其rails适配器,您可以查询序列化字段。
您应该查看此SO question和this anser