KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm writing some image upload code for Ruby on Rails with Paperclip, and I've got a working solution but it's very hacky so I'd really appreciate advice on how to better implement it. I have an 'Asset' class containing information about the uploaded images including the Paperclip attachment, and a 'Generator' class that encapsulates sizing information. Each 'Project' has multiple assets and generators; all Assets should be resized according to the sizes specified by each generator; each Project therefore has a certain set of sizes that all of its assets should have. Generator model: class Generator < ActiveRecord::Base attr_accessible :height, :width belongs_to :project def sym "#{self.width}x#{self.height}".to_sym end end Asset model: class Asset < ActiveRecord::Base attr_accessible :filename, :image # etc. attr_accessor :generators has_attached_file :image, :styles => lambda { |a| a.instance.styles } belongs_to :project # this is utterly horrendous def styles s = {} if @generators == nil @generators = self.project.generators end @generators.each do |g| s[g.sym] = "#{g.width}x#{g.height}" end s end end Asset controller create method: def create @project = Project.find(params[:project_id]) @asset = Asset.new @asset.generators = @project.generators @asset.update_attributes(params[:asset]) @asset.project = @project @asset.uploaded_by = current_user respond_to do |format| if @asset.save_(current_user) @project.last_asset = @asset @project.save format.html { redirect_to project_asset_url(@asset.project, @asset), notice: 'Asset was successfully created.' } format.json { render json: @asset, status: :created, location: @asset } else format.html { render action: "new" } format.json { render json: @asset.er
Tags (comma-separated)
Save Edits
Cancel