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

标签 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

这是数据库中的一条记录

=> #<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>

这些是我尝试过的查询。当前用户.id = 3

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

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

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

最佳答案

这似乎是一个愚蠢的问题,但是参数列是否定义为模型中的序列化列?使用像 MySQL 和(我相信)SQLite 这样的适配器,你不能查询序列化字段。所以如果它是你想查询的东西,你需要将它与序列化字段分开保存。

也就是说,使用 PostgreSQL 及其 rails 适配器,您可以查询序列化字段。

你应该看看这个 SO questionthis anser

关于mysql - SQLite3::SQLException:没有这样的列:parameters.user:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33247850/

相关文章:

ruby - Homebrew、Jekyll、RVM 和 usr/local

ruby-on-rails - group_by 相对日期范围

python - MySQLdb Python 更新匹配行与更改行

ruby-on-rails - Ruby/Rails 中的 ->(破折号大于)运算符是什么

php - mysql 使用 php 和 group_concat 输出到 json

ruby-on-rails - Rails if 语句导致非法八进制数字错误?

ruby-on-rails - SimpleForm 2 : input tags inside a wrapper

ruby - 使用 rspec 在 Controller 中 stub API 调用

php - 将csv导入mysql

c# - Entity Framework 代码首先与 MySql 服务器无法运行迁移