1
tags_list (acts_as_taggable의)가있는 사용자 및 문서 모델이 있습니다.레일 : 하위 요소에 다른 배열이 포함 된 레코드는 어떻게 검색합니까?
특정 사용자의 태그가있는 문서를 찾고 싶습니다. 문서 A, B, C를 검색 할 것> -
user.tag_list = ["ceo" , "sales"]
documentA.tag_list = ["ceo"]
documentB.tag_list = ["all-users']
documentC.tag_list = ["sales", "marketing"]
documentD.tag_list = ["marketing"]
, 예를 들어, 그래서 나는
Document.where(tag_list.includes_any?("all-users" || user.tag_list))
처럼 뭔가를 할 수 있습니다.
분명히 구문이 잘못되었지만 아이디어를 얻었습니다. 어떻게 효율적으로이 작업을 수행 할 수 있습니까?
------- 갱신
참고하시기 바랍니다 tag_list가 사용자 또는 문서 모델하지만 acts_as_taggable 보석에서 액티브 레코드 관계 중의 직접적인 속성이되지 않습니다 : 나는이 전화를 얼마나 . 연산자?
2.1.1 :036 > Document.last.tag_list
Document Load (3.7ms) SELECT "assignable_objects".* FROM "assignable_objects" WHERE "assignable_objects"."type" IN ('Document') ORDER BY "assignable_objects"."id" DESC LIMIT 1
ActsAsTaggableOn::Tag Load (3.5ms) SELECT "tags".* FROM "tags" INNER JOIN "taggings" ON "tags"."id" = "taggings"."tag_id" WHERE "taggings"."taggable_id" = $1 AND "taggings"."taggable_type" = $2 AND (taggings.context = 'tags' AND taggings.tagger_id IS NULL) [["taggable_id", 52], ["taggable_type", "AssignableObject"]]
=> []
감사합니다! tag_list가 Document 내부의 속성이 아니지만 더 많은 관계가 있다면 어떨까요? 나는 act_as_taggable을 사용하고 있으며 그것이 협회라고 믿습니다. – kibaekr
음! 그것은 당신이 tag_list에 접근하는 방법의 문제 일뿐입니다. d.tag_list를 사용하여 문서 (d)의 tag_list에 액세스 할 수 있으면 다음을 수행 할 수 있습니다. Document.select {| d | (d.tag_list - [ "all-users", user.tag_list) .flatten) .size! = tag_list.size). – Mehran
.select는 훌륭하게 작동했지만 배열로 변환하면 활성화 된 레코드가 아닙니다. 그래서 그 쿼리에 .includes (: child_association)를 추가 할 수 없습니까? 어떻게하면 수익을 활성 레코드로 만들 수 있습니까? – kibaekr