2011-04-24 6 views
1

find 메서드를 만들려고합니다. 그러면 tid가 "1 분"또는 "2 분"인 모든 konkurrencer를 찾아야하며 양식은 "Nyhedsbrev"입니다.레일 도움말 찾기 메서드

나는 이런 식으로 뭔가를 시도했다 : 그것은 작동하지 않습니다

Konkurrancer.where("tid = ? or ? and form = ?", "2 min", "1 min", "Nyhedsbrev") 

. 양식이 Nyhedsbrev 인 모든 konkurrencer 만 찾습니다.

답변

2

아마도 의도 한대로 작동합니다. 그 외에는

Konkurrancer.where("tid IN (?) AND form = ?", ['2 min', '1 min'], 'Nyhedsbrev') 

, 사용하려고하는 'OR'syntac는 SQL에 다음과 같이 기록 다음 'OR'조건을 여전히 열을 나열 할 필요가

SELECT * FROM foo WHERE column1 = 'foo' OR column1 = 'BAR' 

공지 사항 다시 이름.

+0

귀하의 답변을 승인 해 드리겠습니다. 레일즈 SQL 파인더 메소드에 대한 정보를 어디에서 읽을 수 있는지 알고 있습니까? 나는 이제 그 사람이 IN (?)을 사용할 수 있다는 것을 알지 못했다. –

+0

ActiveRecord Query Interface에 대한 정보는 다음에서 얻을 수있다 : http://guides.rubyonrails.org/active_record_querying.html 일반적으로 SQL로 할 수있는 모든 일은 ActiveRecord . –

1

이 시도 :

Konkurrancer.where("tid = ? or tid = ?", "2 min", "1 min").where(:form => "Nyhedsbrev") 

을 또한 사용할 수 있습니다 : 두 번째 언급

Konkurrancer.where(
    "(tid = ? or tid = ?) and form = ?", 
    "2 min", 
    "1 min", 
    "Nyhedsbrev" 
) 

참고 :

Konkurrancer.where("form = ? and (tid = ? or tid = ?)", "Nyhedsbrev", "2 min", "1 min") 
+0

유효한 SQL이지만 예상대로 작동하지 않습니다. 고맙습니다. – retro

+0

물론, 효과가 있었지만 효과는 없었습니다. 귀하의 의견에 감사드립니다. – retro

1

귀하의 SQL 조금 잘못, 난 당신이 원하는 생각 tid 열 이름과 괄호