2013-08-01 2 views
0

나는 고유 키의 데이터베이스를 검색하고 나는 다시 그것을 얻고 있지만 배열로 그때 첫 번째 개체을해야 내보기루비 레일 컨트롤러에 WHERE 문

def watch 
    @video = Video.where("key = ?", params[:key]) 
    @video = @video[0] 
end 

I에 그것을 보내 내가 잘못하고있는 것처럼 느낀다. 키는 항상 고유하므로 두 개 이상의 객체를 반환하지 않으므로 항상 첫 번째 객체가 필요합니다. 이 한 줄을 어떻게 만들 수 있습니까?

답변

6
@video = Video.where("key =?" , params[:key]).first 
6

당신은 키가 존재하지 않는 경우

@video = Video.find_by_key(params[:key]) 

또는

@video = Video.where(key: params[:key]).first 

다음은 nil를 반환 할 수 있습니다. 당신이 ResourceNotFound 예외가 강타 방법을 사용하여 선호하는 경우 :

@video = Video.find_by_key!(params[:key]) 

또는 레일에

@video = Video.where(key: params[:key]).first! 
+0

키이 여전히 작동 않는 데이터베이스의 열을 의미? –

+0

오, 알았어. 이걸 읽은 후에보고있는 것 같아.이 버전이 더 이상 사용되지 않으므로 .first가 더 감사하게 여겨진다. http://api.rubyonrails.org/classes/ActiveRecord/Base.html –

+3

이들은 [동적 finders] (http://guides.rubyonrails.org/active_record_querying.html#dynamic-finders)에서는 Rails 4에서 더 이상 사용되지 않습니다. – Stefan