다운로드 링크가 작동하는지 확인해야합니다. 파일이 상당히 크기 때문에 다운로드 디렉토리에 오래된 파일이 없는지 확인해야합니다. 그래서 우리는 모든 데이터베이스 file_name이 다운로드 디렉토리에 같은 이름의 파일을 가지고 있는지 확인하는 다운로드 관리 페이지를 가지고 있습니다. 그런 다음 페이지는 디렉토리의 모든 파일에 데이터베이스의 file_name이 있는지 확인합니다. 컨트롤러의 "포함?" 명세서
:@documents = Document.find(:all, :order => "section asc, sub_section asc, position asc, name asc")
@files = Dir.glob("public/downloads/*").sort
FIRST VALIDATION :
<% @documents.each do |d| -%>
<% if @files.include?("public/downloads/" + d.file_name)
clr = "Green"
else
clr = "Red"
end %>
... color coded print routine ...
<% end %>
SECOND VALIDATION : 내보기에서 데이터베이스에있는 모든 문서 레코드에 대한 파일이 있음을 확인하는 내보기에 모든 파일에 날짜 기반의 문서 레코드가 있는지 확인합니다.
<% @files.each do |f| -%>
<% str = f.gsub(/^.*\//, '')
if @documents.include?(str)
clr = "Green"
else
clr = "Red"
end %>
... color coded print routine ...
<% end %>
with my sm 모든 테스트 문서 목록에서 인쇄 된 데이터베이스 file_names는 다운로드 디렉토리에서 인쇄 된 파일 이름과 정확히 일치합니다. 그러나 두 번째 유효성 검사에 대한 포함 테스트가 작동하지 않습니다. 나는 이유를 알아낼 수 없었다.
감사합니다.
는 완벽하게 작동 : =] 감사합니다. – Jay
나는 탐지가 올바른 일반적인 방법이 아니라고 믿는다. 발견 된 요소를 반환 할 것이기 때문에 문자열이 비어 있지 않다는 것을 알기 때문에이 경우에 작동한다. 대신 .map(). include() 또는 .any()를 사용해야한다고 생각합니다. –
실제로 감지하면 항상 문서 인스턴스가 반환되므로 문제가 발생할 가능성이 없습니다. 이 경우 유일한 차이점은 무엇입니까? boolean을 반환하고 detect는 Document 인스턴스 또는 nil을 반환합니다. – psyho