0
我有在以下表格篩選表 - 活性記錄
- 用戶
- 第
- 標籤(1對多)
標籤可以應用於這兩個用戶和文章。 (用戶標籤是將標籤列入黑名單 - 即不顯示用用戶提交的標籤標記的文章)。因此他們有下面列
- ID
- taggable_type( '文章' 或 '用戶')
- 標題(字符串)
- 加標籤的ID(相關文章ID或用戶ID)
當用戶執行獲取請求時,我希望使用提供的用戶列入黑名單的標籤將activerecord過濾掉所有文章。
我執行以下操作以獲取用戶列入黑名單標籤
if user != nil
user_tags = user.tags
blacklisted_tags = []
user_tags.each do |user|
blacklisted_tags.push(user.title)
end
puts "\n \n \n user tags - #{blacklisted_tags} \n \n \n"
end
blacklisted_tags = ['foo','bar']
陣列我不能似乎得到的ActiveRecord正確過濾掉標記任何的blacklisted_tags的任何物品。
這是我到目前爲止已經完成
negations[:tags] = "tags.title not in #{blacklisted_tags}"
@articles = Article.order(followed).left_outer_joins(:tags).where.not(negations)
我得到下面的SQL錯誤 -
(Mysql2::Error: Unknown column 'articles.taggable_id' in 'where clause': SELECT `articles`.* FROM `articles` LEFT OUTER JOIN `tags` ON `tags`.`taggable_id` = `articles`.`id` AND `tags`.`taggable_type` = 'article' WHERE (`articles`.`taggable_id` != 'tags.title not in [\"foo\", \"bar\"]')
哪裏是鐵軌從獲得 'articles.taggable_id'?
有沒有更好的方法來解決這個問題?
出於某種原因..這似乎只能說明我不想顯示行.. – Kannaj
然後嘗試消極條件 –