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
Methods inherited from Base
Constructor Details
#initialize(subauthority) ⇒ TableBasedAuthority
Returns a new instance of TableBasedAuthority.
35 36 37 38 |
# File 'lib/qa/authorities/local/table_based_authority.rb', line 35 def initialize() self.class.check_for_index @subauthority = end |
Instance Attribute Details
#subauthority ⇒ Object (readonly)
Returns the value of attribute subauthority.
33 34 35 |
# File 'lib/qa/authorities/local/table_based_authority.rb', line 33 def @subauthority end |
Class Method Details
.check_for_index ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 |
# 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
45 46 47 |
# File 'lib/qa/authorities/local/table_based_authority.rb', line 45 def all output_set(base_relation.limit(1000)) end |
#find(uri) ⇒ Object
49 50 51 52 53 |
# File 'lib/qa/authorities/local/table_based_authority.rb', line 49 def find(uri) record = base_relation.find_by(uri: uri) return unless record output(record) end |
#search(q) ⇒ Object
40 41 42 43 |
# File 'lib/qa/authorities/local/table_based_authority.rb', line 40 def search(q) return [] if q.blank? output_set(base_relation.where('lower(label) like ?', "#{q.downcase}%").limit(25)) end |