Class: Internationalize::Adapters::Base
- Inherits:
-
Object
- Object
- Internationalize::Adapters::Base
- Defined in:
- lib/internationalize/adapters/base.rb
Overview
Base adapter class defining the interface for database-specific SQL generation
Direct Known Subclasses
Instance Method Summary collapse
-
#glob_pattern(term) ⇒ String
Wrap a term with pattern wildcards for case-sensitive search Default implementation uses LIKE pattern (PostgreSQL/MySQL) SQLite overrides this to use GLOB pattern.
-
#json_extract(column, locale) ⇒ String
Extract a value from a JSON column.
-
#like_insensitive(column, locale) ⇒ Array<String, Symbol>
Generate a case-insensitive LIKE condition.
-
#like_pattern(term) ⇒ String
Wrap a LIKE pattern with wildcards Uses ActiveRecord's built-in sanitize_sql_like for escaping.
-
#like_sensitive(column, locale) ⇒ Array<String, Symbol>
Generate a case-sensitive LIKE/GLOB condition.
-
#sanitize_locale(locale) ⇒ String
Sanitize a locale for safe SQL interpolation Only allows alphanumeric characters, underscores, and hyphens.
Instance Method Details
#glob_pattern(term) ⇒ String
Wrap a term with pattern wildcards for case-sensitive search Default implementation uses LIKE pattern (PostgreSQL/MySQL) SQLite overrides this to use GLOB pattern
58 59 60 |
# File 'lib/internationalize/adapters/base.rb', line 58 def glob_pattern(term) like_pattern(term) end |
#json_extract(column, locale) ⇒ String
Extract a value from a JSON column
21 22 23 |
# File 'lib/internationalize/adapters/base.rb', line 21 def json_extract(column, locale) raise NotImplementedError, "#{self.class} must implement #json_extract" end |
#like_insensitive(column, locale) ⇒ Array<String, Symbol>
Generate a case-insensitive LIKE condition
30 31 32 |
# File 'lib/internationalize/adapters/base.rb', line 30 def like_insensitive(column, locale) raise NotImplementedError, "#{self.class} must implement #like_insensitive" end |
#like_pattern(term) ⇒ String
Wrap a LIKE pattern with wildcards Uses ActiveRecord's built-in sanitize_sql_like for escaping
48 49 50 |
# File 'lib/internationalize/adapters/base.rb', line 48 def like_pattern(term) "%#{ActiveRecord::Base.sanitize_sql_like(term.to_s)}%" end |
#like_sensitive(column, locale) ⇒ Array<String, Symbol>
Generate a case-sensitive LIKE/GLOB condition
39 40 41 |
# File 'lib/internationalize/adapters/base.rb', line 39 def like_sensitive(column, locale) raise NotImplementedError, "#{self.class} must implement #like_sensitive" end |
#sanitize_locale(locale) ⇒ String
Sanitize a locale for safe SQL interpolation Only allows alphanumeric characters, underscores, and hyphens
12 13 14 |
# File 'lib/internationalize/adapters/base.rb', line 12 def sanitize_locale(locale) locale.to_s.gsub(/[^a-zA-Z0-9_\-]/, "") end |