FarmBot/Farmbot-Web-App

View on GitHub
app/models/arg_name.rb

Summary

Maintainability
A
0 mins
Test Coverage
# Support class for Fragment. Please see fragment.rb for documentation.
class ArgName < ApplicationRecord
  EXPIRY = Rails.env.test? ? 1.second : 2.hours
  KEY = "arg_names:%s"

  validates_uniqueness_of :value

  has_many :primitive_pairs, autosave: true
  has_many :standard_pairs, autosave: true

  def self.cached_by_value(v)
    key = KEY % v
    Rails.cache.fetch(key, expires_in: EXPIRY) do
      find_or_create_by!(value: v)
    end
  end

  def self.cached_by_id(id)
    Rails.cache.fetch(KEY % id, expires_in: EXPIRY) do
      find(id)
    end
  end

  def broadcast?
    false
  end
end