5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-26 16:56:22 +00:00

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

View file

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

View file

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

View file

@ -12,10 +12,6 @@ Rails.application.routes.draw do
get 'markdown', to: 'application#markdown' 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 constraints subdomain: 'api' do
scope module: 'api' do scope module: 'api' do
namespace :v1 do namespace :v1 do