2017-12-13 4 views
0

내 레일 앱에는 많은 사용자가있는 기관 수준의 계정이 있습니다.ActsAsTaggableOn : has_many 관계에있는 자식 개체의 모든 태그 얻기

각 기관마다 많은 프로젝트가 있습니다.

프로젝트는 acts_as_taggable이고 기관의 사용자는 기관의 프로젝트에 태그를 추가 할 수 있습니다.

특정 기관에 속한 프로젝트의 모든 태그 목록을 쿼리하고 싶습니다.

예를 들면, (존재하지 않는) Project.where(institution_id: 1).tags 같은

내가 이것을 촉진 할 수있는 태그의 소유자로 프로젝트의 기관을 설정하고 소유자가 쿼리해야합니까?

class Institution < ActiveRecord::Base 
    acts_as_tagger 
end 

class Project < ActiveRecord::Base 
    acts_as_taggable 
end 

그런 설정 태그 :

@current_user.institution.tag(@some_project, with: 'tag1, tag2') 

... 그리고 태그 점점 :

@current_user.institution.owned_tags 

또는 소유권을 설정 필요로하지 않는 방법이있다? (내 데이터에 있지만, 작동) 일부 조정이 필요할 수 있습니다 그 구문은

ActsAsTaggableOn::Tag. 
    joins(:taggings). 
    where(taggings: {taggable: current_institution.projects}) 

:

+0

당신은 이것을 분류하는 것을 끝내 었습니까? – jvillian

답변

1

물론, 그런 짓을.

기관에 속한 프로젝트를 얻을 수있는 방법이 있다고 가정합니다. current_institution.projects으로 물결을 피 웠습니다. 자신의 코드로 적절하게 대체하십시오.

어쨌든 나는 올바른 방향으로 향해야한다고 생각합니다.

+0

감사! 이 템플릿을 통해 곧바로 답을 얻을 수있었습니다. ** ActsAsTaggableOn **에 대해서는 다음과 같이 작동합니다 :'ActsAsTaggableOn :: Tag.joins (: taggings) .where (taggings : {taggable_id : current_institution.projects})'나는 다른 모델을 ** act_as_taggable **으로 제한했습니다. ** taggable_type **가있는 프로젝트 만 쿼리하려면 다음과 같이하십시오 :'ActsAsTaggableOn :: Tag.joins (: taggings) .where (taggings : {taggable_id : current_institution.projects, taggable_type : : Project})' – noob

+0

죄송합니다. 'ActsAsTaggable' ActsAsTaggableOn 대신. 호기심에서 내가 진술 한대로 해봤습니까? 나는 taggable : current_institution.projects ('taggable_id'가 아닌)를 프로젝트에 특별히 적용하여'taggable_type :'문을 저장한다고 생각했을 것이다. – jvillian

+0

네,'taggable : ... '으로 시도했지만 충분히 똑똑하지 않았습니다. 그 칼럼이 존재하지 않는다고 불평했다. – noob

관련 문제