optimizar busqueda de roles

This commit is contained in:
f 2020-05-12 11:58:07 -03:00
parent 25a30ecf51
commit 2f3dbc8494
4 changed files with 8 additions and 11 deletions

View file

@ -6,6 +6,8 @@
# necesita del consentimiento de le usuarie :)
class Rol < ApplicationRecord
ROLES = %w[usuarie invitade].freeze
USUARIE = 'usuarie'
INVITADE = 'invitade'
belongs_to :usuarie
belongs_to :site
@ -13,10 +15,10 @@ class Rol < ApplicationRecord
validates_inclusion_of :rol, in: ROLES
def invitade?
rol == 'invitade'
rol == INVITADE
end
def usuarie?
rol == 'usuarie'
rol == USUARIE
end
end

View file

@ -81,14 +81,12 @@ class Site < ApplicationRecord
"https://#{hostname}/"
end
# TODO: Mover esta consulta a la base de datos para no traer un montón
# de cosas a la memoria
def invitade?(usuarie)
invitades.pluck(:id).include? usuarie.id
!invitades.where(id: usuarie).empty?
end
def usuarie?(usuarie)
usuaries.pluck(:id).include? usuarie.id
!usuaries.where(id: usuarie).empty?
end
# Este sitio acepta invitades?

View file

@ -20,8 +20,9 @@ class Usuarie < ApplicationRecord
email.split('@', 2).first
end
# Encuentra el rol que tiene le usuarie en el sitio
def rol_for_site(site)
site.roles.merge(roles).first
roles.find_by(site: site)
end
# XXX: Ver increment_and_lock

View file

@ -12,10 +12,6 @@ Rails.application.routes.draw do
get 'markdown', to: 'application#markdown'
# XXX Mantenemos solo esta ruta acá porque form_for no reconoce @site
# como un objeto válido
resources :invitadxs, only: [:create]
constraints subdomain: 'api' do
scope module: 'api' do
namespace :v1 do