首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数据库中匹配ActiveRecord::Store列

在数据库中匹配ActiveRecord::Store列
EN

Stack Overflow用户
提问于 2015-04-17 20:46:44
回答 2查看 331关注 0票数 2

我有一个名为User的模型,我将用户模型的散列存储在params属性中。但是,我必须按某些标准检索数据。

假设我存储了一个用户对象,其中params字段为{ checked: true },其他字段为{ checked: true }

现在我必须检索具有params:{ checked: true}的用户

我使用的查询是:

代码语言:javascript
复制
User.where(params: {"checked" => true});

这是抛出错误,因为:

代码语言:javascript
复制
INTERNAL ERROR!!! SQLite3::SQLException: no such column: params.checked: SELECT "users".* FROM "users"  WHERE "params"."checked" = 't'

我搜索了一大堆关于在数据库中比较两个store字段的信息,但没有找到相关的东西。

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2015-04-17 21:05:10

代码语言:javascript
复制
class User
  scope :score, -> {
    where :score -> true
  }
end

控制器..

代码语言:javascript
复制
@users = params[:checked]? ? User.score : User.all
票数 0
EN

Stack Overflow用户

发布于 2015-04-17 21:12:10

如果您使用的是MySQL,则不能直接执行查询。store只是一个Hash,它在保存和加载时被序列化和反序列化。当您使用store时,您在加载和保存数据方面受到很大限制。

你可以尝试使用LIKE (不能保证它是否能工作):

代码语言:javascript
复制
User.where('params LIKE ?', '%checked: true%')

我建议不要对任何需要查询的数据使用store (序列化)。

PostgreSQL可以存储和搜索哈希/json-查看hstore__。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29699648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档