Class: FactDb::Models::EntityAlias

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/fact_db/models/entity_alias.rb

Overview

Represents an alternative name for an entity

Aliases allow entities to be found by various name forms (nicknames, abbreviations, email handles, etc.). Validation prevents invalid aliases like pronouns or generic terms.

Examples:

Create an alias

alias = EntityAlias.create!(entity: person, name: "Johnny", kind: "nickname")

Constant Summary collapse

KINDS =

Returns valid alias kinds.

Returns:

  • (Array<String>)

    valid alias kinds

%w[name nickname email handle abbreviation title].freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.find_entity_by_alias(text) ⇒ Entity?

Finds an entity by alias text (case-insensitive)

Parameters:

  • text (String)

    the alias text to search for

Returns:

  • (Entity, nil)

    the entity with this alias or nil



43
44
45
# File 'lib/fact_db/models/entity_alias.rb', line 43

def self.find_entity_by_alias(text)
  find_by(["LOWER(name) = ?", text.downcase])&.entity
end

Instance Method Details

#by_kind(k) ⇒ ActiveRecord::Relation

Returns aliases of a specific kind

Parameters:

  • k (String)

    the alias kind

Returns:

  • (ActiveRecord::Relation)


32
# File 'lib/fact_db/models/entity_alias.rb', line 32

scope :by_kind, ->(k) { where(kind: k) }

#high_confidenceActiveRecord::Relation

Returns aliases with confidence >= 0.9

Returns:

  • (ActiveRecord::Relation)


37
# File 'lib/fact_db/models/entity_alias.rb', line 37

scope :high_confidence, -> { where("confidence >= ?", 0.9) }