Module: ActiveScaffold::Bridges::ActiveStorage::ActiveStorageBridgeHelpers
- Defined in:
- lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb
Class Method Summary collapse
-
.active_storage_has_many_fields(klass) ⇒ Object
has_many :“#name_attachments”, -> { where(name: name) }, as: :record, class_name: “ActiveStorage::Attachment”, inverse_of: :record, dependent: false do.
-
.active_storage_has_one_fields(klass) ⇒ Object
has_one :“#name_attachment”, -> { where(name: name) }, class_name: “ActiveStorage::Attachment”, as: :record, inverse_of: :record, dependent: false.
- .generate_delete_helpers(klass) ⇒ Object
- .klass_has_active_storage_fields?(klass) ⇒ Boolean
Instance Method Summary collapse
- #active_storage_has_many_fields ⇒ Object
- #active_storage_has_one_fields ⇒ Object
- #generate_delete_helpers ⇒ Object
Class Method Details
.active_storage_has_many_fields(klass) ⇒ Object
has_many :“#name_attachments”, -> { where(name: name) }, as: :record, class_name: “ActiveStorage::Attachment”, inverse_of: :record, dependent: false do
16 17 18 19 20 |
# File 'lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb', line 16 def active_storage_has_many_fields(klass) klass.reflect_on_all_associations(:has_many) &.select { |reflection| reflection.class_name == 'ActiveStorage::Attachment' } &.collect { |association| association.name[0..-13] } || [] end |
.active_storage_has_one_fields(klass) ⇒ Object
has_one :“#name_attachment”, -> { where(name: name) }, class_name: “ActiveStorage::Attachment”, as: :record, inverse_of: :record, dependent: false
9 10 11 12 13 |
# File 'lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb', line 9 def active_storage_has_one_fields(klass) klass.reflect_on_all_associations(:has_one) &.select { |reflection| reflection.class_name == 'ActiveStorage::Attachment' } &.collect { |association| association.name[0..-12] } || [] end |
.generate_delete_helpers(klass) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb', line 26 def generate_delete_helpers(klass) (active_storage_has_one_fields(klass) | active_storage_has_many_fields(klass)).each do |field| next if klass.method_defined?(:"#{field}_with_delete=") klass.attr_reader :"delete_#{field}" klass.define_method "delete_#{field}=" do |value| value = (value == 'true') if value.is_a?(String) return unless value # passing nil to the file column causes the file to be deleted. send(field).purge end end end |
.klass_has_active_storage_fields?(klass) ⇒ Boolean
22 23 24 |
# File 'lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb', line 22 def klass_has_active_storage_fields?(klass) active_storage_has_one_fields(klass).present? || active_storage_has_many_fields(klass).present? end |
Instance Method Details
#active_storage_has_many_fields ⇒ Object
46 47 48 |
# File 'lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb', line 46 def active_storage_has_many_fields @active_storage_has_many_fields ||= ActiveStorageBridgeHelpers.active_storage_has_many_fields(self) end |
#active_storage_has_one_fields ⇒ Object
42 43 44 |
# File 'lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb', line 42 def active_storage_has_one_fields @active_storage_has_one_fields ||= ActiveStorageBridgeHelpers.active_storage_has_one_fields(self) end |
#generate_delete_helpers ⇒ Object
50 51 52 |
# File 'lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb', line 50 def generate_delete_helpers ActiveStorageBridgeHelpers.generate_delete_helpers(self) end |