Module: Assetable::Base::ClassMethods

Defined in:
lib/assetable/active_record/base.rb

Instance Method Summary collapse

Instance Method Details

#assetable(*args) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/assetable/active_record/base.rb', line 9

def assetable *args
  if args.present?
    args.each do |arg|
      has_one :"#{arg}_association", -> { where(name: arg) }, class_name: "Assetabler::AssetAttachment", as: :assetable
      has_one arg, through: :"#{arg}_association", :source => :asset
      accepts_nested_attributes_for :"#{arg}_association", allow_destroy: true
      # Hack to fix the has_one accessor from not correctly guessing namespace of source association
      class_eval %Q"
        def #{arg}
          #{arg}_association.try(:asset) || super
        end
      "

    end
  end

end

#galleryable(*args) ⇒ Object

Galleries



28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/assetable/active_record/base.rb', line 28

def galleryable *args
  # By default, let's include a gallery. 
  unless args.include? :gallery
    has_one :gallery, class_name: "Assetabler::Gallery", as: :galleryable, dependent: :destroy
    accepts_nested_attributes_for :gallery
  end
  
  if args.present?
    args.each do |arg|
      has_one arg, -> { where(name: arg) }, class_name: "Assetabler::Gallery", as: :galleryable
      accepts_nested_attributes_for arg
    end
  end
end