Wednesday, September 18, 2013

[Rails] Accessing model attributes in ActiveSupport::Concern module

I have some models which share the same functionality just on other paths. So I decided to put these methods in a module and set the path in the model. My problem is that I'm not able to access the attribute in my module.

my model:
class Job < ActiveRecord::Base    include ImageModel      image_dir = "jobs"  end
my module:
module ImageModel    extend ActiveSupport::Concern      def delete_image        unless pic_link == "" || pic_link == nil          begin            if File.delete(Rails.root.join("public", "images", image_dir, pic_link))              return true            else              return false            end          rescue            return true #an error occured but when the image does not exist we still return true          end        end          return true      end        def replace_image(new_image)        File.open(Rails.root.join("public", "images", image_dir, new_image.original_filename), "wb") do |f|          if f.write new_image.read            delete_image            pic_link = new_image.original_filename            return true #everything went fine          else            return false #return false if new image could not be written          end        end      end  end
The error I get:
undefined local variable or method `image_dir' for #<Job:0x007f8a93b9e8d8>
on this line:
File.open(Rails.root.join("public", "images", image_dir, new_image.original_filename), "wb") do |f|

Did I miss something or did I oversee something important?

Felix

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/55a6bfd4-e4c5-4949-8db3-e3d9ac40bbdc%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate