2019-04-05 22:14:20 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
# Las piratas son las usuarias empoderadas del miniloom
|
|
|
|
class Pirata < ApplicationRecord
|
2019-04-05 22:40:28 +00:00
|
|
|
# Puede proponer consensos
|
|
|
|
has_many :consensos
|
|
|
|
# Y tener posiciones
|
|
|
|
has_many :posiciones
|
|
|
|
|
2019-08-03 17:28:04 +00:00
|
|
|
has_many :webpush_subscriptions
|
|
|
|
|
2019-08-03 16:23:52 +00:00
|
|
|
# Puede participar en barcas
|
|
|
|
has_many :tripulaciones
|
|
|
|
has_many :barcas, through: :tripulaciones
|
|
|
|
|
2019-04-05 22:40:28 +00:00
|
|
|
# Y además una contraseña segura :P
|
2019-04-05 22:14:20 +00:00
|
|
|
has_secure_password
|
|
|
|
# Una por correo
|
|
|
|
validates :email, presence: true, uniqueness: true
|
|
|
|
validates :nick, presence: true, uniqueness: true
|
2019-08-03 21:44:28 +00:00
|
|
|
|
|
|
|
scope :todas_menos, ->(pirata) { where.not(id: pirata) }
|
2020-06-21 00:37:29 +00:00
|
|
|
|
|
|
|
before_create :telegram_token!
|
|
|
|
|
2020-06-21 00:43:01 +00:00
|
|
|
# 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
|
2020-06-21 00:37:29 +00:00
|
|
|
def telegram_token!
|
|
|
|
self.telegram_token = SecureRandom.hex unless telegram_token
|
|
|
|
|
|
|
|
true
|
|
|
|
end
|
2019-04-05 22:14:20 +00:00
|
|
|
end
|