2013-07-25 3 views
-3

내 코드 목록 폴더에있는 모든 문서 :루비 세 개를 포함하거나 배열을 비교한다면?

arr = [] 
file = Dir.entries('C:\Sites\what\upload').reject{|entry| entry == "." || entry == ".."} 
file.each do |f| 
a = File.read('C:\Sites\what\upload' + '/' + f) + f 

및 검색 patient.name 파일, patient.vorname에 대한, 그리고 patient.birthday이 존재한다. 이 경우, 프로그램은 환자에게이 문서를 할당합니다

@patients.each do |patient| 
if a.include?(patient.name) || a.include?(patient.vorname) || a.include?(patient.birthday) 

내 프로그램은 어떻게 든 텍스트에서 언급되지 않은 것을 문서 또는 더 나은와는 아무 상관이없는 사용자에게 문서를 지정합니다. 문제는 if 문이 잘못되었다고 생각합니다.

이전에 텍스트를 분할하고 [patient.name, patient.vorname, patient.birtday]으로 새 배열을 비교하면 더 좋을까요?

arr << patient.id 
first = Patient.find_by_id(patient.id) 
second = first.images.create(:url => 'C:\Sites\what\upload' + f) 
end 
end 
end 
+2

당신이, 당신이 '사용되어야하는 문서를 할당 할 경우에만 다음 세 가지 조건을 확인해야 할 경우 &&'이 아닌'||' – mcfinnigan

+1

당신이 원하는나요 환자의 성명 * OR * 그들의 성함 * 또는 *이 포함 된 경우 환자에게 문서를 링크하십시오. 아니면 이것들은 * AND *이어야합니다. 그들이 사용해야하고 코드를 변경하여 && not || –

답변

0

아래 시도 :

if [patient.name,patient.vorname,patient.birthday].all? {|i| a.include? i } 
+0

아니요, IT는 세 가지 진술을 모두 포함해야합니다! 감사합니다 –

+3

@EmSta 그렇다면'any? '대신'all?'을 사용하십시오. – toro2k

관련 문제