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