1
我有以下DB模式:查找記錄方含特定標籤
User
- id
- name (String)
UserTag
- user_id
- tag_id
Tag
- id
- key (String)
,我也有很多的where
陳述一個相當複雜的用戶搜索鏈。我試圖找出如何包含另一個條件到我的連鎖店 - 過濾分配了特定標籤的用戶(此標籤的ID是未知的,只是它已知的key
)。
所以,這裏是或多或少我的代碼的外觀:
col = User.all
col = col.where('cats_count <= 0') if args[:no_cat]
col = col.where('dogs_count <= 0') if args[:no_dog]
col = col.where('other_pets_count <= 0') if args[:no_other_pet]
# ... tag logic filtering here ...
col = col.where('age > 100') if args[:old]
,我想過濾的用戶,誰擁有分配key=non_smoking
一個Tag
。理想情況下,我會喜歡它是數據庫引擎independen,如果這很重要 - 我在sqlite/postgres。
老實說我已經完全沒有對如何處理這個任何想法,我可能缺乏SQL的一些知識,然後,用Rails/ActiveRecord的。
順便說一句,你不需要每個'col.where'之間的東西嗎?像'OR' /'AND'?它打擾SQL-我... – Blag
默認鏈接'where'的使用「AND」,但你可以得到它是「或」如果你需要它(見[ActiveRecord的OR查詢](https://開頭計算器。 COM /問題/ 3639656/ActiveRecord的-或查詢)) –