Class: ApplicationRecord
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- ApplicationRecord
- Defined in:
- lib/generators/katapult/basics/templates/app/models/application_record.rb
Class Method Summary collapse
Class Method Details
.find_by_anything(identifier) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/generators/katapult/basics/templates/app/models/application_record.rb', line 9 def find_by_anything(identifier) matchable_columns = columns.reject { |column| [:binary, :boolean].include?(column.type) } query_clauses = matchable_columns.collect do |column| qualified_column_name = "#{table_name}.#{column.name}" is_mysql = connection.class.name =~ /mysql/i target_type = is_mysql ? 'CHAR' : 'TEXT' # CHAR is only 1 character in PostgreSQL column_as_string = "CAST(#{qualified_column_name} AS #{target_type})" "#{column_as_string} = ?" end bindings = [identifier] * query_clauses.size where([query_clauses.join(' OR '), *bindings]).first end |
.find_by_anything!(identifier) ⇒ Object
22 23 24 25 |
# File 'lib/generators/katapult/basics/templates/app/models/application_record.rb', line 22 def find_by_anything!(identifier) find_by_anything(identifier) or raise ActiveRecord::RecordNotFound, "No column equals #{identifier.inspect}" end |
.these(arg) ⇒ Object
5 6 7 |
# File 'lib/generators/katapult/basics/templates/app/models/application_record.rb', line 5 def these(arg) where(id: arg.collect_ids) end |