44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/tessa/model.rb', line 44
def asset(name, args={})
field = tessa_fields[name] = Field.new(args.merge(name: name))
multiple = args[:multiple]
if respond_to?(:has_one_attached)
if multiple
has_many_attached(name)
else
has_one_attached(name)
end
callbacks = get_callbacks(:commit)
callbacks.delete(callbacks.to_a.last)
after_destroy_commit { public_send("#{name}_attachment")&.purge_later }
end
dynamic_extensions =
if respond_to?(:has_one_attached)
if multiple
::Tessa::DynamicExtensions::MultipleRecord.new(field)
else
::Tessa::DynamicExtensions::SingleRecord.new(field)
end
else
if multiple
::Tessa::DynamicExtensions::MultipleFormObject.new(field)
else
::Tessa::DynamicExtensions::SingleFormObject.new(field)
end
end
include dynamic_extensions.build(Module.new)
remove_method "#{name}" rescue nil
remove_method "#{name}=" rescue nil
end
|