# How might I use file\_column for incoming email attachments?

**URL:** <https://www.ruby-forum.com/t/how-might-i-use-file-column-for-incoming-email-attachments/51476>\
**Category:** Rails\
**Created:** [December 31, 2005, 11:27pm UTC](https://www.ruby-forum.com/t/how-might-i-use-file-column-for-incoming-email-attachments/51476 "2005-12-31T23:27:16Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Duane\_J](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/e19adc/32.png) [@Duane\_J](https://www.ruby-forum.com/u/Duane_J)\
**Post date:** [December 31, 2005, 11:27pm UTC](https://www.ruby-forum.com/t/how-might-i-use-file-column-for-incoming-email-attachments/51476/1 "2005-12-31T23:27:16Z")

</div>

I’m writing a ‘Mailman’ model that catches emails sent to my  
application (kind of like backpack, I think). The trouble is that  
I’d like to save image attachments in the same was that file\_column  
saves them–in fact, I’d really like to use a simple assignment like  
photo.image = attachment to save the image in its proper place.

However, I’m getting the following error from the ImageMagick  
extension of file\_column:

“Image invalid image”

(“image” is the name of the column, so that’s why it seems to be  
duplicated).

Does anyone know how to leverage file\_column’s fantastic simplicity  
when dealing with this kind of incoming attachment?

Thanks,

Duane J.  
(canadaduane)  
[http://blog.inquirylabs.com/](http://blog.inquirylabs.com/)

---

<div class="post-metadata">

**Author:** ![Duane\_J](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/e19adc/32.png) [@Duane\_J](https://www.ruby-forum.com/u/Duane_J)\
**Post date:** [January 2, 2006, 6:51pm UTC](https://www.ruby-forum.com/t/how-might-i-use-file-column-for-incoming-email-attachments/51476/2 "2006-01-02T18:51:55Z")

</div>

On 12/31/05, Duane J. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> [http://blog.inquirylabs.com/](http://blog.inquirylabs.com/)
> 
> * * *
> 
> Rails mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)

In grepping the source, the only place “invalid image” occurs is when  
RMagick throws an exception. I use a modified magick\_file\_column.rb  
that uses the command-line Imagemagick, because I’m not a fan of  
RMagick, so I can’t say too much, but try breakpointing the first few  
lines of the magick\_file\_column.rb to see what that exception is  
coming from.

–  
Kyle M.  
Chief Technologist  
E Factor Media // FN Interactive  
removed\_email\_address@domain.invalid  
1-866-263-3261

---

<div class="post-metadata">

**Author:** ![Duane\_J](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/e19adc/32.png) [@Duane\_J](https://www.ruby-forum.com/u/Duane_J)\
**Post date:** [January 3, 2006, 4:48am UTC](https://www.ruby-forum.com/t/how-might-i-use-file-column-for-incoming-email-attachments/51476/3 "2006-01-03T04:48:22Z")

</div>

On Jan 2, 2006, at 10:48 AM, Kyle M. wrote:

> > “Image invalid image”  
> > (canadaduane)  
> > RMagick throws an exception. I use a modified magick\_file\_column.rb  
> > that uses the command-line Imagemagick, because I’m not a fan of  
> > RMagick, so I can’t say too much, but try breakpointing the first few  
> > lines of the magick\_file\_column.rb to see what that exception is  
> > coming from.

Thanks for looking in to this a bit, Kyle. I think my question is  
more of an “I don’t quite understand how file\_column automatically  
handles IOString objects, why won’t it handle a TMail::Attachment  
object?” I did find the error message that you pointed out, but I  
was a bit surprised at the size of the plugin as a whole. Quite an  
achievement! 🙂

Any idea how I might trick or otherwise modify file\_column in to  
accepting TMail::Attachment object assignment (e.g. I’d like to do  
this: User.new(:photo =\> attachment) where :photo is a file\_column  
column and attachment is a TMail::Attachment object)?

Duane J.  
(canadaduane)  
[http://blog.inquirylabs.com/](http://blog.inquirylabs.com/)

---

<div class="post-metadata">

**Author:** ![Duane\_J](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/e19adc/32.png) [@Duane\_J](https://www.ruby-forum.com/u/Duane_J)\
**Post date:** [January 3, 2006, 7:16pm UTC](https://www.ruby-forum.com/t/how-might-i-use-file-column-for-incoming-email-attachments/51476/4 "2006-01-03T19:16:08Z")

</div>

On 1/3/06, Kyle M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > > > [http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)  
> > > > Thanks for looking in to this a bit, Kyle. I think my question is
> 
> removed\_email\_address@domain.invalid  
> 1-866-263-3261

Note that the solution I just proposed won’t help with the RMagick  
issue, just getting a TMail::Attachment into FileColumn

–  
Kyle M.  
Chief Technologist  
E Factor Media // FN Interactive  
removed\_email\_address@domain.invalid  
1-866-263-3261

---

<div class="post-metadata">

**Author:** ![Duane\_J](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/e19adc/32.png) [@Duane\_J](https://www.ruby-forum.com/u/Duane_J)\
**Post date:** [January 3, 2006, 7:16pm UTC](https://www.ruby-forum.com/t/how-might-i-use-file-column-for-incoming-email-attachments/51476/5 "2006-01-03T19:16:06Z")

</div>

On 1/2/06, Duane J. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > > However, I’m getting the following error from the ImageMagick  
> > > Thanks,
> 
> more of an "I don’t quite understand how file\_column automatically  
> Duane J.  
> (canadaduane)  
> [http://blog.inquirylabs.com/](http://blog.inquirylabs.com/)
> 
> * * *
> 
> Rails mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)

File\_column relies on receiving a CGI-uploaded file, which is either a  
File, or an IOString object, depending on filesize, which has been  
extended with a few extra methods (original\_filename, size,  
local\_path, content\_type). If you pass an ordinary File,  
FileColumn::FileCompat is mixed in to provide this functionality.  
This happens in BaseUploadedFile.assign().

I don’t know much about TMail::Attachment, but if its similar enough  
to File, you could replace the first line in  
BaseUploadedFile.assign():

#old  
if file.is\_a? File

#new  
if file.is\_a?(File) || file.is\_a?(TMail::Attachment)

–  
Kyle M.  
Chief Technologist  
E Factor Media // FN Interactive  
removed\_email\_address@domain.invalid  
1-866-263-3261
