Class: Qa::Authorities::Local::TableBasedAuthority
- Defined in:
- lib/qa/authorities/local/table_based_authority.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#subauthority ⇒ Object
readonly
Returns the value of attribute subauthority.
Class Method Summary collapse
Instance Method Summary collapse
- #all ⇒ Object
- #find(uri) ⇒ Object
-
#initialize(subauthority) ⇒ TableBasedAuthority
constructor
A new instance of TableBasedAuthority.
- #search(q) ⇒ Object
Constructor Details
#initialize(subauthority) ⇒ TableBasedAuthority
Returns a new instance of TableBasedAuthority.
36 37 38 39 40 |
# File 'lib/qa/authorities/local/table_based_authority.rb', line 36 def initialize() super() self.class.check_for_index @subauthority = end |
Instance Attribute Details
#subauthority ⇒ Object (readonly)
Returns the value of attribute subauthority.
34 35 36 |
# File 'lib/qa/authorities/local/table_based_authority.rb', line 34 def @subauthority end |
Class Method Details
.check_for_index ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/qa/authorities/local/table_based_authority.rb', line 8 def check_for_index @checked_for_index ||= begin conn = ActiveRecord::Base.connection if table_or_view_exists? && !conn.indexes(table_name).find { |i| i.name == table_index } Rails.logger.error "You've installed local authority tables, but you haven't indexed the label. " \ "Rails doesn't support functional indexes in migrations, so you'll have to add this manually:\n" \ "CREATE INDEX \"#{table_index}\" ON \"#{table_name}\" (local_authority_id, lower(label))\n" \ " OR on Sqlite: \n" \ "CREATE INDEX \"#{table_index}\" ON \"#{table_name}\" (local_authority_id, label collate nocase)\n" \ " OR for MySQL use the MSQLTableBasedAuthority instead, since mysql does not support functional indexes." end end end |
Instance Method Details
#all ⇒ Object
47 48 49 |
# File 'lib/qa/authorities/local/table_based_authority.rb', line 47 def all output_set(base_relation.limit(1000)) end |
#find(uri) ⇒ Object
51 52 53 54 55 |
# File 'lib/qa/authorities/local/table_based_authority.rb', line 51 def find(uri) record = base_relation.find_by(uri: uri) return unless record output(record) end |
#search(q) ⇒ Object
42 43 44 45 |
# File 'lib/qa/authorities/local/table_based_authority.rb', line 42 def search(q) return [] if q.blank? output_set(base_relation.where('lower(label) like ?', "#{q.downcase}%").limit(25)) end |