Ruby on rails 基于activerecord元数据的查询
因此,我在rails数据库中有一个用户对象,其中包含一个元数据列。我希望能够做的是基于本专栏的查询 所以我有一个Ruby on rails 基于activerecord元数据的查询,ruby-on-rails,activerecord,store,Ruby On Rails,Activerecord,Store,因此,我在rails数据库中有一个用户对象,其中包含一个元数据列。我希望能够做的是基于本专栏的查询 所以我有一个User,它有User.name和User.metadata。我设置了商店,以便: store_accessor :metadata, [:hair_color, :eye_color] 如果我做了User.first.hair\u color我得到了blue就像我期望的那样。。。似乎不起作用的是User.where(头发颜色:'blue')。如何基于元数据进行查询?您必须这样搜索
User
,它有User.name
和User.metadata
。我设置了商店,以便:
store_accessor :metadata, [:hair_color, :eye_color]
如果我做了
User.first.hair\u color
我得到了blue
就像我期望的那样。。。似乎不起作用的是User.where(头发颜色:'blue')
。如何基于元数据进行查询?您必须这样搜索
User.where("metadata like ?", "%#{matadata_key}: #{metadata_value}%")
例如,元数据\u键
将是“头发颜色”
,元数据\u值
将是“蓝色”
这将是一个非常缓慢的搜索。通读了解更多详细信息如果您想存储任意复杂的信息(如元数据),我建议使用JSON列类型,该类型在和中提供。以下是有关官方文档的一些信息。如果可能,我会避免使用store_访问器来搜索要搜索的字段。如果只有少量全局使用的属性,则可以通过使它们成为数据库中的实际列来实现。或者使用一个gem,比如if,字段会因用户而异。我忘了提到这个列已经是JSON了,所以这正是我需要的!谢谢