class AppRail::Airtable::ApplicationRecord

Public Class Methods

airtable_attr(*attributes) click to toggle source
# File lib/app_rail/airtable/application_record.rb, line 17
def self.airtable_attr(*attributes)
  attributes.each do |attribute|
    define_method(attribute.to_s.snake_case) { self[attribute] }
    define_method("#{attribute.to_s.snake_case}=") { |value| self[attribute] = value }
  end
end
ar_list_item(text:, detail_text: nil, image: nil, sf_symbol: nil, material_icon: nil) click to toggle source

Step utilities

# File lib/app_rail/airtable/application_record.rb, line 25
def self.ar_list_item(text:, detail_text: nil, image: nil, sf_symbol: nil, material_icon: nil)
  define_method(:ar_list_item_as_json) do
    {
      id: self.id, 
      text: method_value(text).to_s, 
      detailText: method_value(detail_text).to_s, 
      imageURL: method_value(image), 
      sfSymbolName: method_value(sf_symbol), 
      materialIconName: method_value(material_icon)
    }.compact
  end
end
ar_stack(text_items:) click to toggle source
# File lib/app_rail/airtable/application_record.rb, line 38
def self.ar_stack(text_items:)
  define_method(:ar_stack_as_json) do
    text_items.map{|ti| {type: :text, label: ti, text: self[ti].to_s} }
  end
end
base_key() click to toggle source
# File lib/app_rail/airtable/application_record.rb, line 9
def self.base_key
  ENV.fetch("AIRTABLE_BASE_ID")
end
index(user:) click to toggle source

Override to provide custom sorting or filtering for index

# File lib/app_rail/airtable/application_record.rb, line 47
def self.index(user:)
  all
end
table_name() click to toggle source
# File lib/app_rail/airtable/application_record.rb, line 13
def self.table_name
  self.name.pluralize
end

Private Instance Methods

image(name, index: 0, size: :full) click to toggle source

size is either :small, :large or :full

# File lib/app_rail/airtable/application_record.rb, line 58
def image(name, index: 0, size: :full)
  self[name][index]["thumbnails"][size.to_s]["url"] if self[name] && self[name].length > index
end
method_value(name) click to toggle source
# File lib/app_rail/airtable/application_record.rb, line 53
def method_value(name)
  send(name) if name.present?
end