Sha256: 9b7ef0879a19f45b6198865e6ab331ae77e9e71838ad98bc147e8b23672b1068

Contents?: true

Size: 849 Bytes

Versions: 1

Compression:

Stored size: 849 Bytes

Contents

module Beef
  module Has
    module Assets
      def self.included(base)
        base.extend ClassMethods
      end
      
      module ClassMethods
        def has_assets
          has_many :assetings, :as => :assetable, :dependent => :delete_all
          has_many :assets, :through => :assetings
          
          # Override the default asset_ids method
          define_method("asset_ids=") do |new_value|
            ids = (new_value || []).reject { |nid| nid.blank? }
            ids.collect!{ |id| id.to_i}
            logger.debug "ASSETS the same #{ids == self.asset_ids} | IDS #{ids} | #{self.asset_ids}"
            return if ids == self.asset_ids
            self.assets.clear
            ids.each_index do |idx|
              self.assets << Asset.find(ids[idx])
            end
          end
        end
      end
    end
  end  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
beef-has_assets-0.2.2 lib/has_assets.rb