2010-07-30 4 views
0

조인 SQL 쿼리 : videos를 SELECT * FROM videos INNER가 categories .ID = videos .category루비, 모델 나는이 개 모델을 가지고

WHI ON categories 가입하세요. ch는 특정 지점까지 괜찮습니다. 기본적으로 카테고리 ID (카테고리의 필드)를 가져와 카테고리 ID를 기반으로 카테고리 이름을 가져 오기 위해 뷰에서 다른 호출을 할 필요가 없습니다. 어떤 아이디어?

고맙습니다. 그렇습니다. 저는 루비를 처음 사용합니다. API를 읽으려고했지만 도움이되지 않았습니다.

답변

1

Video 클래스의 연결이 잘못 설정되었다고 생각하는 경우 다음과 같아야합니다.

class Video < ActiveRecord::Base 
    belongs_to :category 
end 

@videos = Video.all(:include => :category) 할 수 있습니다. 단일 SQL 문을 사용하여 비디오 및 연관된 범주 레코드를 검색합니다.

덧붙여 말하자면 belongs_to 연관에 대한 :class_name 옵션은 중복입니다. ActiveRecord가 이미 연관 이름에서 클래스 이름을 자동으로 유추했기 때문입니다. 예를 들어 기본 클래스와 다른 연관 이름을 사용하려는 경우에만이 옵션을 사용해야합니다. 작성자/사람. 내가 전에 그것을했다하고 일한 적이 어떻게 사실입니다 가입하거나 아무것도 없음 videos` 'SELECT * FROM ... :(:

+0

, 질의 변화 시도 –

+0

내 편집 된 답변보기 –

+0

감사합니다. John : 왜 class_name이 있고 그것을 : 카테고리로 변경했는지 이유는 내가 편집하지 않으면 편집 할 때 다음 오류가 발생하기 때문입니다. ActiveRecord :: AssociationTypeMismatch in VideosController # update 카테고리 (# 2175068700) 예상, 문자열 있음 (# 2148246520) 유일한 방법은 나는 이것을 우회하는 것을 발견했다. 위의 일을하는 것이었다 .... 나는 내 손에 너무 큰 난리가 있다고 생각한다. –

0
join_condition = " ,categories where INNER JOIN categories ON categories.id=videos.category" 

@videos = Video.all(:joins => join_condition) 

내가 할 때이

+0

조인 문이 맞다고 생각하지 않습니다 : Mysql :: Error : SQL 구문에 오류가 있습니다. 'INNER JOIN categories ON categories.id = videos.category'(1 행 : SELECT'videos'.) * FROM'videos'에서 INNER JOIN 카테고리가 사용되는 카테고리를 사용하는 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. ON categories.id = videos.category –

관련 문제