RyanofWoods/rails-react-swedish-birds

View on GitHub
app/models/species.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
class Species < ApplicationRecord
  validates :scientific_name, :english_name, :swedish_name, :population_category, presence: true
  validates :scientific_name, :english_name, :swedish_name, uniqueness: true

  belongs_to :family
  has_many :observations

  default_scope { where.not(population_category: 0) }

  include PgSearch::Model
  pg_search_scope :search_by_english_and_scientific_name,
                  against: [:scientific_name, :english_name],
                  using: {
                    trigram: { word_similarity: true }
                  }
  pg_search_scope :search_by_swedish_and_scientific_name,
                  against: [:scientific_name, :swedish_name],
                  using: {
                    trigram: { word_similarity: true }
                  }
  pg_search_scope :search_by_all_names,
                  against: [:scientific_name, :english_name, :swedish_name],
                  using: {
                    trigram: { word_similarity: true }
                  }
end