Class: PgRls::Tenant::Searchable
- Inherits:
-
Object
- Object
- PgRls::Tenant::Searchable
- Defined in:
- app/models/pg_rls/tenant/searchable.rb
Overview
Searchable Class
Constant Summary collapse
- SEARCH_METHOD_BY_COLUMN_TYPE =
PgRls::Tenant.columns.each_with_object({}) do |column, hash| type = column..type hash[type] ||= [] hash[type] << column.name end
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(search_input) ⇒ Searchable
constructor
A new instance of Searchable.
- #search_methods ⇒ Object
Constructor Details
#initialize(search_input) ⇒ Searchable
Returns a new instance of Searchable.
31 32 33 |
# File 'app/models/pg_rls/tenant/searchable.rb', line 31 def initialize(search_input) @search_input = search_input end |
Class Method Details
.by_rls_methods(search_input) ⇒ Object
22 23 24 25 26 27 28 29 |
# File 'app/models/pg_rls/tenant/searchable.rb', line 22 def self.by_rls_methods(search_input) new(search_input).search_methods.each do |search_method| tenant = PgRls::Tenant.find_by(search_method => search_input) return tenant if tenant.present? end raise PgRls::Error::TenantNotFound, "No tenant found for #{search_input}" end |
.by_rls_object(tenant) ⇒ Object
13 14 15 16 17 18 19 20 |
# File 'app/models/pg_rls/tenant/searchable.rb', line 13 def self.by_rls_object(tenant) case tenant when Tenant then tenant when String, Symbol, Integer then Searchable.by_rls_methods(tenant) when PgRls.main_model then tenant.becomes(Tenant) else raise PgRls::Error::InvalidSearchInput, "Invalid search input: #{tenant}" end end |
Instance Method Details
#search_methods ⇒ Object
35 36 37 |
# File 'app/models/pg_rls/tenant/searchable.rb', line 35 def search_methods SEARCH_METHOD_BY_COLUMN_TYPE[target_type] || [] end |