Skip to content
cavalle edited this page Dec 23, 2012 · 13 revisions

Version #1

http://weblog.jamisbuck.org/2007/1/17/concerns-in-activerecord

module Folder
  def self.included(base)
    base.has_many :files, :as => :owner, :dependent => :destroy
  end

  # This returns the path where files are to be uploaded
  # for this specific "folder".
  def attachment_path
    "/path/to/files/for/#{id}"
  end
end
class Message < ActiveRecord::Base
  include Folder
  #...
end

class Comment < ActiveRecord::Base
  include Folder
  #...
end

Version #2

module DiscountCalculator
  def total_discount
    basket_items.collect(&:discount).inject(:+)
  end
end
class Basket < ActiveRecord::Base
  has_many :basket_items
  include DiscountCalculator
end

Clone this wiki locally