Hi everyone I am using attachment fu for image uploading. I try to customize the path for pictures be saved. If I call session[:kwikerhash] in the image.rb where there method for path definition is I get an undefined method or variable error. If I fill a global variable @kwikerhash in the controller with the session value and try to use it in the image.rb it says that @kwikerhash is nil. Is there a possibility to get access to session values in model files? Thanks in advance. Regards Adam -- Posted via http://www.ruby-forum.com/.
Hi Adam Meyer> Is there a possibility to get access to session values in model files?You can''t do that and if any means doing that means violating MVC . What you can do is to pass the session variable from controller to model For example in the image.rb you have a def do_this(session_id) ---- end So from controller you can pass it like @image_model_obj.do_this(session[:kwikerhash]) Sijo -- Posted via http://www.ruby-forum.com/.
Sijo Kg wrote:> Hi Adam Meyer >> Is there a possibility to get access to session values in model files? > > You can''t do that and if any means doing that means violating MVC . > What you can do is to pass the session variable from controller to model > For example in the image.rb you have a > > def do_this(session_id) > ---- > end > > So from controller you can pass it like > > @image_model_obj.do_this(session[:kwikerhash]) > > > > > SijoHi Sijo you''re right. But if I set a value to @kwikerhash in the controller I have also access to it in the view. This is fucked. Because its a method which I override from the attachment_fu plugin. So I need to create the same method with parameters. Thanks -- Posted via http://www.ruby-forum.com/.
Hello again,
sorry but I have no Idea how to solve it. I try to explain the problem.
I am using attachment_fu for picture upload and output. I wanna change
the attachment-fu to save the pics in a specific folder. Therefor my
image.rb looks
class Image < ActiveRecord::Base
has_many :categories
belongs_to :category
belongs_to :products
belongs_to :kwikers
has_attachment :content_type => :image,
:storage => :file_system, :path_prefix =>
''public/assets/uploads'',
:max_size => 10.megabytes,
:resize_to => ''1024x1024>'',
:thumbnails => { :thumb => ''150x150>''},
:processor => :MiniMagick # attachment_fu looks in this order:
ImageScience, Rmagick, MiniMagick
validates_as_attachment
def uploaded_data=(file_data)
return nil if file_data.nil? || file_data.size == 0
self.content_type = file_data.content_type
extension = file_data.original_filename.slice(/\.\w+$/)
self.filename = Digest::SHA1.hexdigest(Time.now.to_s) + extension
File.extname(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
# START: FOLDER STRUCTURE MODIFYING CODE
# Changes the folder structure
def full_filename(thumbnail = nil)
file_system_path = (thumbnail ? thumbnail_class :
self).attachment_options[:path_prefix]
File.join(RAILS_ROOT, file_system_path,
created_at.strftime("%Y/%m/%d"), thumbnail_name_for(thumbnail))
end
end
I want to replace the created_at.strftime("%Y/%m/%d") in the
full_filename method with the value which is set in
session[:kwikerhash]. But I don''t know how. The view file calls a
method
image.public_filename(:thumb) for example.
What can I do to let the full_filename method take the value from the
session?
Please help.
Adam
--
Posted via http://www.ruby-forum.com/.
On your image model, you could add, for example: class Image < ActiveRecord::Base attr_writer :session_date .... and, on you controller, right after you create a new image: @image = Image.new <whatever_parameters> @image.session_date = session[:kwikerhash][<whatever_param>] Hope this helps! On Sep 30, 6:54 pm, Adam Meyer <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> Hello again, > > sorry but I have no Idea how to solve it. I try to explain the problem. > I am using attachment_fu for picture upload and output. I wanna change > the attachment-fu to save the pics in a specific folder. Therefor my > image.rb looks > > class Image < ActiveRecord::Base > has_many :categories > belongs_to :category > belongs_to :products > belongs_to :kwikers > > has_attachment :content_type => :image, > :storage => :file_system, :path_prefix => ''public/assets/uploads'', > :max_size => 10.megabytes, > :resize_to => ''1024x1024>'', > :thumbnails => { :thumb => ''150x150>''}, > :processor => :MiniMagick # attachment_fu looks in this order: > ImageScience, Rmagick, MiniMagick > validates_as_attachment > > def uploaded_data=(file_data) > return nil if file_data.nil? || file_data.size == 0 > self.content_type = file_data.content_type > extension = file_data.original_filename.slice(/\.\w+$/) > > self.filename = Digest::SHA1.hexdigest(Time.now.to_s) + extension > > File.extname(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 > > # START: FOLDER STRUCTURE MODIFYING CODE > # Changes the folder structure > def full_filename(thumbnail = nil) > file_system_path = (thumbnail ? thumbnail_class : > self).attachment_options[:path_prefix] > File.join(RAILS_ROOT, file_system_path, > created_at.strftime("%Y/%m/%d"), thumbnail_name_for(thumbnail)) > end > end > > I want to replace the created_at.strftime("%Y/%m/%d") in the > full_filename method with the value which is set in > session[:kwikerhash]. But I don''t know how. The view file calls a method > image.public_filename(:thumb) for example. > > What can I do to let the full_filename method take the value from the > session? > > Please help. > > Adam > -- > Posted viahttp://www.ruby-forum.com/.