基于activerecord元数据的查询

时间:2017-06-14 17:01:03

标签: ruby-on-rails activerecord store

所以我在rails DB中有一个带有元数据列的用户对象。我希望能够做的是基于此列的查询......

所以我的[xml] $xml = Get-Content $path $xml.SelectNodes("//tr") | Where-Object {$_.ChildNodes.Count -gt 0 -and $_.ChildNodes[0].Name -eq 'td'} | ForEach-Object {$_.ChildNodes[0].InnerText} UserUser.name。我设置了商店,所以我有:

User.metadata

如果我store_accessor :metadata, [:hair_color, :eye_color] 我得到User.first.hair_color就像我期望的那样......似乎没有效果的是blue。如何基于元数据进行查询?

2 个答案:

答案 0 :(得分:1)

如果您想存储任意复杂的信息(例如元数据),我建议使用JSON列类型,该类型可在MySQLPostgre中使用。以下是官方文档中有关saving and querying JSON data in Rails的一些信息。

答案 1 :(得分:0)

你必须像这样搜索

User.where("metadata like ?", "%#{matadata_key}: #{metadata_value}%")

对于您的示例,metadata_key"hair_color"metadata_value"blue"

这将是一个非常慢的搜索。阅读this blog了解更多详情