From 2f3dbc8494f574314d69b3bc1d2b4de55a6ff155 Mon Sep 17 00:00:00 2001 From: f Date: Tue, 12 May 2020 11:58:07 -0300 Subject: [PATCH] optimizar busqueda de roles --- app/models/rol.rb | 6 ++++-- app/models/site.rb | 6 ++---- app/models/usuarie.rb | 3 ++- config/routes.rb | 4 ---- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/app/models/rol.rb b/app/models/rol.rb index 4e4dd6fa..5879d666 100644 --- a/app/models/rol.rb +++ b/app/models/rol.rb @@ -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 diff --git a/app/models/site.rb b/app/models/site.rb index 058e16e6..c6b50aa2 100644 --- a/app/models/site.rb +++ b/app/models/site.rb @@ -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? diff --git a/app/models/usuarie.rb b/app/models/usuarie.rb index 90e86510..7b7cda52 100644 --- a/app/models/usuarie.rb +++ b/app/models/usuarie.rb @@ -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 diff --git a/config/routes.rb b/config/routes.rb index f89bc537..e993d0cd 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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