레일 3 응용 프로그램에서 부모 연결의 열이 특정 문자열 인 레코드를 찾으려고합니다. 예 : 카테고리 이름 = "my_category"인 게시물.Rails 3에서 belongs_to 연관의 열을 쿼리하는 가장 효율적인 방법은 무엇입니까?
class Post
belongs_to Category
end
class Category
has_many Posts
end
카테고리는 이름 열을 포함하며 검색을 실행할 수있는 유일한 데이터입니다. 따라서 category_id에 직접 필터링 할 수는 없습니다.
이 작업을 수행하는 가장 효율적인 레일스 방식은 무엇입니까? 나는 그들이 일해야하는 것처럼 보이는 몇 가지 옵션을 시도했지만,하지 않았다!.
Post.joins(:category).where('category.name'=>'my_category')
Post.joins(:category).where(:category=>{:name=>'my_category'})
Post.includes(:category).where('category.name'=>'my_category')
Post.includes(:categories).where('category.name'=>'my_category')
Post.includes(:category).where(:category=>{:name=>'my_category'})
좀 레일 마법을 내려다 해요 만약 내가 두 줄
category=Category.where(:name=>"my_category")
Post.where(:category_id=>category)
에서이 작업을 수행하는 방법을 볼 수 있지만 내가 궁금해? 그것이 멍청한 질문이라면 미안해, 나는 아직도 배우고있어!
감사합니다 @ blackbird07! 정확히 내가 찾고 있던 것, 단일 데이터베이스 호출. 나는 너무 가까웠다. 단지 범주를 복수화해야했다. 이러한 복잡한 활성 레코드 쿼리는 항상 나를 혼란스럽게합니다. 나는 항상 올바른 구문을 얻었는지 여부와 그 실패, 시행 착오와 같은 기분이 든다. 나에게 도움이 될만한 유용한 참고 사항이 있습니까? 다시 한번 감사합니다! –
그래, 통증도 느낀다. 나는 레일 가이드 http://guides.rubyonrails.org/active_record_querying.html과 http://guides.rubyonrails.org/association_basics.html과 API 문서 http : //api.rubyonrails를 항상 보게됩니다. org/classes/ActiveRecord/Base.html. 후자에서 "조인"을 검색하면 예제를 찾을 수 있습니다 : 학교 및 학교 : – emrass
그리고 나는 너무 배웠습니다!감사합니다 blackbird07 – Edward