Class: Utf8mb3Validator
- Inherits:
-
ActiveModel::EachValidator
- Object
- ActiveModel::EachValidator
- Utf8mb3Validator
- Defined in:
- app/validators/utf8mb3_validator.rb
Overview
While our database support utf8mb4, the same isn't true for the warehouse and there may be even tighter constraints downstream in NPG. This allows us to constrain affected fields until the downstream processes add support. This validator produces an error message listing the problem characters.
utf8mb3 is the subset of utf8 which can be represented in 3 bytes or fewer and is what is supported when the mysql character-set is set to utf8. Typically if covers the majority of language characters, but excludes emoji
A similar validator should be added for any tighter restrictions that may be applied for other fields.
Instance Method Summary collapse
Instance Method Details
#validate_each(record, attribute, value) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'app/validators/utf8mb3_validator.rb', line 15 do # NOTE: The following attribute is not required for Microarray Genotyping. # I think this might be broken and suggests that there should be separate classes for project: one for # next-gen sequencing that includes this attribute in it's metadata, and one for microarray genotyping # that doesn't. include ProjectManager::Associations include BudgetDivision::Associations custom_attribute(:project_cost_code, required: true) custom_attribute(:funding_comments) custom_attribute(:collaborators) custom_attribute(:external_funding_source) custom_attribute(:sequencing_budget_cost_centre) custom_attribute(:project_funding_model, in: PROJECT_FUNDING_MODELS) custom_attribute(:gt_committee_tracking_id) before_validation do |record| record.project_cost_code = nil if record.project_cost_code.blank? record.project_funding_model = nil if record.project_funding_model.blank? end end |