基于活动记录元数据的查询
Query base on activerecord metadata
所以我的 rails 数据库中有一个带有元数据列的用户对象。我希望能够做的是基于此列的查询...
所以我有一个 User
,它有 User.name
和 User.metadata
。我设置了商店,所以我有:
store_accessor :metadata, [:hair_color, :eye_color]
如果我这样做 User.first.hair_color
,我会得到 blue
,就像我期望的那样......似乎不起作用的是 User.where(hair_color: 'blue')
。如何根据元数据进行查询?
你必须像这样搜索
User.where("metadata like ?", "%#{matadata_key}: #{metadata_value}%")
对于您的示例,metadata_key
将是 "hair_color"
,而 metadata_value
将是 "blue"
这将是一个非常缓慢的搜索。通读 this blog 了解更多详情
如果你想存储任意复杂的信息(比如元数据似乎是),我建议使用 JSON 列类型,它在官方文档 MySQL and Postgre. Here is some info about saving and querying JSON data in Rails 中可用。
所以我的 rails 数据库中有一个带有元数据列的用户对象。我希望能够做的是基于此列的查询...
所以我有一个 User
,它有 User.name
和 User.metadata
。我设置了商店,所以我有:
store_accessor :metadata, [:hair_color, :eye_color]
如果我这样做 User.first.hair_color
,我会得到 blue
,就像我期望的那样......似乎不起作用的是 User.where(hair_color: 'blue')
。如何根据元数据进行查询?
你必须像这样搜索
User.where("metadata like ?", "%#{matadata_key}: #{metadata_value}%")
对于您的示例,metadata_key
将是 "hair_color"
,而 metadata_value
将是 "blue"
这将是一个非常缓慢的搜索。通读 this blog 了解更多详情
如果你想存储任意复杂的信息(比如元数据似乎是),我建议使用 JSON 列类型,它在官方文档 MySQL and Postgre. Here is some info about saving and querying JSON data in Rails 中可用。