class WikiLine < ApplicationRecord has_many :wiki_revision_lines, dependent: :restrict_with_exception validates :sha256, presence: true, uniqueness: true, length: { is: 64 } validates :body, presence: true def self.upsert_by_body! body sha = Digest::SHA256.hexdigest(body) now = Time.current upsert({ sha256: sha, body:, created_at: now, updated_at: now }) find_by!(sha256: sha) end end