I just got finished working with attachment_fu, and ended up modeling
a plugin for my company since attachment_fu was slight over kill for
our needs.
Have you opened up attachment_fu's source? upload_data is just a
method (so is upload_data=) which is inserted into a model that calls
has_attachment. I have yet to spec my plugin so I'm interested to see
what your results are.
Thanks,
:: Justin Reagor
:: [EMAIL PROTECTED]
On Aug 22, 2007, at 12:46 PM, Matt Lins wrote:
Sorry, attachment_fu is a plugin for handling binary data. It
handles storing the file in the file system and storing some
helpful data in the database about the file.
The previous code is from the attachment_fu plugin(no, I didn't
modify it). This property needs to be satisfied in order for the
model to validate. So I need to get my model to validate in the
spec so I can actually test other parts of my model. Here is my model:
class Picture < ActiveRecord::Base
has_and_belongs_to_many :products
has_attachment :content_type => 'image/jpeg',
:storage => :file_system,
:max_size => 3.megabytes,
:resize_to => '400x400>',
:thumbnails => {:medium => '200x200>', :small =>
'100x100>'},
:path_prefix => 'images/products'
validates_as_attachment
validates_uniqueness_of :filename
validates_presence_of :filename
def before_update
self.thumbnails.each do |t|
t.filename= thumbnail_name_for(t.thumbnail)
t.save
end
end
def full_filename(thumbnail = nil)
file_system_path = (thumbnail ? thumbnail_class :
self).attachment_options[:path_prefix].to_s
File.join(RAILS_ROOT, 'public/external', file_system_path,
thumbnail_name_for(thumbnail) + '.jpg')
end
def public_image
self.public_filename
end
end
aslak hellesoy wrote:
On 8/22/07, Matt Lins <[EMAIL PROTECTED]> wrote:
First off, I'm not trying to spec attachment_fu, I know it's
been tested.
But, I added some code to that model that I do need to test.
Basically, I
need to somehow fulfill the "uploaded_data" property so I can
actually run
my tests(otherwise they fail because of validations). The
"uploaded_data"
field is what would grab the multipart data from form. Here it is:
# This method handles the uploaded file object. If you
set the field
name to uploaded_data, you don't need
# any special code in your controller.
#
# <% form_for :attachment, :html => { :multipart =>
true } do |f|
-%>
# <p><%= f.file_field :uploaded_data %></p>
# <p><%= submit_tag :Save %>
# <% end -%>
#
# @attachment = Attachment.create! params[:attachment]
#
# TODO: Allow it to work with Merb tempfiles too.
def uploaded_data=(file_data)
return nil if file_data.nil? || file_data.size == 0
self.content_type = file_data.content_type
self.filename = file_data.original_filename if
respond_to?(:filename)
if file_data.is_a?(StringIO)
file_data.rewind
self.temp_data = file_data.read
else
self.temp_path = file_data.path
end
end
I'm not familiar with attachment_fu - is this code from attachment_fu
that you have modified? Or is it your code entirely? Attachment_fu's
entirely? Where does this code come from?
Aslak
While I was digging I found out that "file_data" is a ruby
Tempfile object.
So, I tried to create a dummy file and pass it, but it failed. I
found out
in the CGI library, it actually extends the Tempfile object and
adds some
methods/properties. It started to get messy, so I thought I'd ask
for
advice.
How can I create a valid attachment_fu model spec(so I can start
tweaking
it to test my other validations)?
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users