mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
50 lines
1.1 KiB
Ruby
50 lines
1.1 KiB
Ruby
# Allow use of Paperclip's has_attached_file on non-ActiveRecord classes
|
|
# https://gist.github.com/basgys/5712426
|
|
|
|
module OpenFoodNetwork
|
|
module Paperclippable
|
|
def self.included(base)
|
|
base.extend(ActiveModel::Naming)
|
|
base.extend(ActiveModel::Callbacks)
|
|
base.include(ActiveModel::Validations)
|
|
base.include(Paperclip::Glue)
|
|
|
|
# Paperclip required callbacks
|
|
base.define_model_callbacks(:save, only: [:after])
|
|
base.define_model_callbacks(:commit, only: [:after])
|
|
base.define_model_callbacks(:destroy, only: [:before, :after])
|
|
|
|
# Initialise an ID
|
|
base.__send__(:attr_accessor, :id)
|
|
base.instance_variable_set :@id, 1
|
|
end
|
|
|
|
# ActiveModel requirements
|
|
def to_model
|
|
self
|
|
end
|
|
|
|
def valid?() true end
|
|
|
|
def new_record?() true end
|
|
|
|
def destroyed?() true end
|
|
|
|
def save
|
|
run_callbacks :save do
|
|
end
|
|
true
|
|
end
|
|
|
|
def errors
|
|
obj = Object.new
|
|
def obj.[](_key) [] end
|
|
|
|
def obj.full_messages() [] end
|
|
|
|
def obj.any?() false end
|
|
obj
|
|
end
|
|
end
|
|
end
|