어떤 카테고리의 5 개 리뷰와 달리 특정 카테고리의 5 개 리뷰 만 표시하려고합니다. 나는 비교 목적을 위해 일하고 있던 나중에 게시했습니다.Ruby on Rails 3 제한 다중 테이블 쿼리 및 배열 유형 변환
리뷰에는 카테고리 ID 색인이 있습니다.이 색인을 사용하여 카테고리 이름을 찾고 원하는 이름의 카테고리 이름을 비교합니다. 그런 다음 배열에서 추출한 5 개의 리뷰를 저장합니다 (가장 효율적인 방법입니까?). 리뷰와 카테고리는 두 개의 별개의 테이블입니다.
현재 "리뷰를 배열로 변환 할 수 없습니다"오류가 발생합니다. 나는 이것이 형변환 문제라고 생각 하나? Review가 배열이되기를 원하지 않습니다. @review가 5 개의 리뷰를 보유하고있는 이전 코드와 동일한 결과를 얻길 바랍니다. 이 문제에 올바르게 접근하고 있는지 확실하지 않습니다.
현재 코드
def home
@review = []
idx = 1
Review.find_each do |review|
break if idx == 5
@category = Category.find(review.category_id).category_name
if @category == "Something"
@review += review and idx+=1
end
end
end
기존 코드
def home
@review = Review.find(:all, :limit => 5)
end
도와
감사합니다!
설명해 주셔서 감사합니다. 이제 작동 중입니다. 더 관용적 인 방법으로 나는 동의하지만 카테고리/검토에는 부모/자식 관계가 없으므로 해결책이 작동하지 않습니다.리뷰에는 단지 카테고리의 외래 키가 있습니다. – John
관계는 부모/자식이어야 할 필요는 없으며, 연관을 설정하기 위해 외래 키만 필요합니다 (그렇게하는 데 부당한 제한이 없다고 가정 할 때). 위 유스 케이스는 연결을 정의하는 것과 같은 이유입니다. –
내가 얻는 오류는 "정의되지 않은 메소드'리뷰 '가 # <카테고리 : 0x53e0ff8>"입니다. 더 설명 할 수 있습니까? 나는 이것이 어떻게 작동하는지 이해하지 못한다. 카테고리에는 review_id 외래 키가 없으므로 카테고리에서 리뷰를 호출 할 수 있습니까? 리뷰에만 카테고리의 외래 키가 있습니다. – John