2017-06-14 64 views
0

所以我有一個用戶對象在我的rails數據庫與元數據列。我希望能夠做的是基於關閉此列的查詢......積極記錄元數據的查詢基礎

所以我有一個User具有User.nameUser.metadata。我設置的商店,所以我必須:

store_accessor :metadata, [:hair_color, :eye_color] 

如果我做User.first.hair_color我得到blue正如我所期望的......什麼似乎並不奏效是User.where(hair_color: 'blue')。我如何根據元數據進行查詢?

+0

如果可能,我會避免使用store_accessor作爲您想要搜索的字段。如果只有少量全局使用的屬性,可以通過將它們設置爲數據庫上的實際列來完成。或[EAV](https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model)使用諸如[eav_hashes]之類的寶石(https://github.com/iostat/eav_hashes)如果字段會因用戶而異。 –

回答

0

你將不得不尋找這樣

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

對於示例metadata_key"hair_color"metadata_value"blue"

這將是一個非常緩慢的搜索。通讀this blog更多細節