我有一個Rails模型的屬性是一個數組值(字符串)的數組。我想做一個ActiveRecord查找,返回其數組包含特定值的任何記錄。有沒有辦法做到這一點與ActiveRecord,會使它比迭代更高性能?ActiveRecord查找模型的數組屬性包含一個值(不關聯數組)
2
A
回答
5
由於默認情況下,Rails使用YAML序列化數組,因此很難執行「包含值」查詢。
如果你的價值是獨一無二的,部分一組固定的,(如roles
柱['User', 'Admin', 'Guest']
),你可以做這樣的事情:
User.where("roles ilike '%\n- Guest\n%'")
因爲這將匹配的---\n- User\n- Admin\n Guest\n
的YAML。
或者,您可以在Postgres中使用本地數組類型。在Rails 3中,你將需要使用activerecord-postgres-array gem(儘管我不知道這是多麼好)。在Rails 4中,它是本地支持的。
您需要將您的列如:
t.string :roles_array, :array => true, :length => 30
然後,你可以查詢反對:
User.where("'Guest' = ANY(roles_array)")
相關問題
- 1. 檢查關聯數組包含值
- 2. 如何獲取包含Ember模型的屬性值的數組?
- 3. Sum ActiveRecord關係(模型+模型=數組?)
- 4. 模型的關聯數組
- 5. 包含數組屬性
- 6. ActiveRecord的模型「型」態關聯的列包含關聯的模型
- 7. awk允許關聯數組包含值作爲數組?
- 8. 查找關聯數組
- 9. 檢查數組值中的另一個關聯數組
- 10. activerecord查找全部不包含在數組中
- 11. 檢查關聯數組中包含的值,並檢索陣列
- 12. 使用可包含,模型關聯查找()與深度關聯
- 13. 動態地將關聯多維數組添加到包含另一個關聯多維數組的數組中?
- 14. Rspec:檢查數組是否包含包含屬性的對象
- 15. 檢查關聯數組包含鍵值對
- 16. 把鑰匙和一個關聯數組的值到另一個關聯數組
- 17. 模型關聯返回的數組不是數組?
- 18. 獲取數組的一個關鍵是另一個數組中,幷包含值
- 19. 的IndexOf中包含數組屬性
- 20. 選擇關聯數組中的每個第一個數組值
- 21. 如何檢查值屬性是否包含在數組中?
- 22. 查找對象數組是否包含具有特定值的屬性
- 23. 根據屬性查找不存在於另一個數組中的數組
- 24. MongoDB - 僅查找其數組包含查詢數組的文檔
- 25. 切換數字不包含在關聯數組中的PHP
- 26. 查找包含多個數組中最大/最小值元素的數組?
- 27. 未定義的關聯數組查找
- 28. 內存中的關聯數組查找
- 29. LINQ - 數組屬性包含來自另一個數組的元素
- 30. Rails包含模型關聯
您正在使用的數據庫? –
Postgres(Heroku) – ryan0