lumi-api/app/models/pirata.rb
2020-06-20 21:43:01 -03:00

39 lines
1,021 B
Ruby

# frozen_string_literal: true
# Las piratas son las usuarias empoderadas del miniloom
class Pirata < ApplicationRecord
# Puede proponer consensos
has_many :consensos
# Y tener posiciones
has_many :posiciones
has_many :webpush_subscriptions
# Puede participar en barcas
has_many :tripulaciones
has_many :barcas, through: :tripulaciones
# Y además una contraseña segura :P
has_secure_password
# Una por correo
validates :email, presence: true, uniqueness: true
validates :nick, presence: true, uniqueness: true
scope :todas_menos, ->(pirata) { where.not(id: pirata) }
before_create :telegram_token!
# Devuelve la URL de Telegram
# @return [String]
def telegram_url
'https://t.me/' + Telegram.bots[:default].username + '?start=' + telegram_token
end
# Asigna un token a cada pirata si no lo tiene
# @return [TrueClass] Los callbacks tienen que terminar en true
def telegram_token!
self.telegram_token = SecureRandom.hex unless telegram_token
true
end
end