2014-10-22 7 views
1

저는 현재 레일스에 구축중인 애플리케이션에 매우 기본적인 IMAP 클라이언트를 구현하고 있습니다. imap 데이터를 파싱하는 유용한 방법을 많이 제공하는 Mail gem을 사용하고 있습니다.ActiveRecord에 ruby ​​Mail (from gem) 객체를 저장하십시오.

데이터베이스에서 생성하는 메일 개체를 저장하고 싶습니다. 그게 가능하니?

email = Email.new 
    email.uid = id 
    email.mail = Mail.new(imap.fetch(id, "RFC822")[0]["attr"]["RFC822"] 
    email.save 

즉 내가 내가 IMAP 전화의 성능이 느린 이후에하지 않는 한 객체를 다시 다운로드해야하고 싶지 않아 편리한 일이다,하지만 난 수 있도록하고 싶습니다 그것을 되돌아보고 (그리고 나중에 나눌 필요가있는 모든 것을해라.)

그때 나는 내 자신의 이메일 모델에서 해당 기능을 구축 할 필요없이

email.find(x).mail.body 

및 기타 다양한 유용한 작업을 호출 할 수 있습니다.

1 : 활성 레코드 모델을 어떻게 설정합니까?

1a : 첨부 파일을 제외하고 저장하기가 더 쉬운 기능을하는 것이 좋을까요? (심지어 가능하다?)

당신의 도움을 주셔서 감사합니다,

+0

여기서 질문을 분명히해야합니다. 데이터베이스 필드에 개체를 저장할 수 있는지 실제로 묻습니다. 즉 필드를 검색 할 때 객체를 얻습니다. 그런 다음 객체를 가져올 수 있습니다. 이메일을 저장할 때마다 이메일에 대한 전체 데이터베이스 스키마를 설정하지 않아도됩니다. – Carpela

답변

0

여러 데이터베이스 도식은 메일을 저장하기 위해 개발되었다. 나는 one,에서 일했고 다른 것들도 있습니다. 절 믿으세요, 힘든 일입니다. 결과는 매우 유용 할 수 있습니다. 그러나 귀하의 질문이 결과에 중점을 두지 않기 때문에 귀하의 경우에는 가치가 없다고 생각됩니다.

json 라이브러리를 사용하면 대부분의 json 라이브러리가 요즘을 지원하는 것처럼 자동 추론 된 구조로 파일에 객체 그래프를 작성하는 것이 더 쉽습니다. 그렇게하면 많은 것을 할 수는 없지만 매우 훨씬 쉬우 며 완전히 검색된 메시지와 불완전하게 검색된 메시지를 저장할 수 있습니다. 특정 본문 부분을 가져 오지 않은 경우 json 라이브러리는 해당 필드에 대해 null을 작성합니다.

0

저장된 메일로 수행 할 작업에 따라 다릅니다. 데이터베이스를 통해 쉽게 액세스 할 수 있도록 메일의 특정 부분 만 필요하면 archiveopteryx와 같은 복잡한 설정은 필요하지 않습니다. 기본적으로 이메일의 완전한 표현을 관계형 데이터베이스 테이블에 매핑합니다. 대부분의 경우에는 세부 사항이 필요하지 않으며 단순한 데이터 모델을 사용하는 것이 완벽 할 것입니다.

A1 : rails g model Email from to subject date:datetime message_id body. 이것은 단지 기본적인 부분 일뿐입니다.

a1a : 원하지 않는 경우 첨부 파일을 저장할 필요가 없습니다. 필요한 경우 데이터베이스 자체에 저장하지 않는 것이 좋습니다. 첨부 파일은 업로드와 동일하므로 그렇게 할 수있는 많은 보석이 있습니다 (https://www.ruby-toolbox.com/categories/rails_file_uploads).

+0

나는 그 물건을 깨뜨릴 생각이 없다. 나는 그것을 그대로 보관하고 컨트롤러에서 무엇을하고 있어도 행복합니다. 필자는 모든 조각을 한 조각 씩 추출 할 수 있었지만, Mail gem은 훨씬 더 편리한 방법이라고 생각합니다. 즉 개체를 db에 저장합니다. 그런 다음 다시 돌아 가야 할 때마다 항상 개체 전체를 검색 할 수 있습니다. 내가 조각을 가져 가면 나머지 부분은 잃어 버릴거야. – Carpela

+0

데이터베이스는 속성을 기반으로 항목을 찾는 것이 좋습니다. 필요하지 않은 경우 원시 데이터에 쉽게 액세스 할 수 있도록 메일을 저장하고 싶다면 모든 데이터베이스 리소스를 낭비하는 대신 간단한 파일 저장소를 사용하는 것이 좋습니다. – jomue

0

posgres jsonb 열을 사용하면 이메일을 json으로 저장할 수 있습니다. 제 경우에는 첨부 파일을 무시합니다 (필자는 참조를 저장하고 필요할 때 검색 함). Mail gem과 잘 작동합니다.