레일즈 용 acts_as_tsearch 플러그인을 사용하여 PostgreSQL에서 전체 텍스트 검색을 수행합니다.acts_as_tsearch와 많은 관계를 검색하는 SQL
그들은 여기에 멀티 테이블 검색의 예 제공 : http://code.google.com/p/acts-as-tsearch/wiki/ActsAsTsearchMethod
을하지만이 일대 다 관계를한다는 것을. 페이지의 태그에 대해 many-to-many 관계 (has_and_belongs_to_many 또는 habtm)를 검색하도록하려고합니다. 그러나 SQL은 충분히 발전하지 못했습니다. 여기
는 내가 지금까지있어 무엇 :acts_as_tsearch :vectors => {
:fields => {
"a" => {:columns => ["pages.name"], :weight => 1.0},
"b" => {:columns => ["pages.description"], :weight => 0.2},
"c" => {:columns => ["tags.name"], :weight => 0.2}
},
:tables => {
:tags => {
:from => "tags INNER JOIN taggings ON tags.id = taggings.tag_id",
:where => "((taggings.taggable_type = 'Page') AND (taggings.taggable_id = ???.id) AND ((taggings.context = 'tags')))"
}
}
}
나는 (내가 ??? 어디다) 페이지 ID를 참조하는 방법을 모르겠어요.
도움 주셔서 감사합니다.
taggable_id가 무엇에 사용되는지 설명 할 수 있습니까? – Andomar
좋은 질문입니다. 미안하지만 설명해야합니다. 다형성이므로 taggable_id는 태그를 가질 수있는 모든 모델을 나타냅니다. 이 경우에는 내 페이지에만 태그가 있기 때문에 page_id라고 할 수 있지만 모든 모델에 태그가있을 수 있도록 다형성으로 만들었습니다. 기본적으로 "taggings"테이블은 페이지와 태그가 다 대다 관계를 연결하기위한 ID를 보유합니다. 당신의 도움을 주셔서 감사합니다! –