Skip to content

Instantly share code, notes, and snippets.

@ismasan
Created September 26, 2019 13:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ismasan/91dd4917f3ed02d06a49fb2f419c7018 to your computer and use it in GitHub Desktop.
Save ismasan/91dd4917f3ed02d06a49fb2f419c7018 to your computer and use it in GitHub Desktop.
Parametric.policy(:nullable_integer) do
PARAMETRIC_INT_EXP = /^\d+$/.freeze
coerce do |value, _key, _context|
if value.to_s =~ PARAMETRIC_INT_EXP
value.to_i
else
nil
end
end
meta_data do
{ type: :integer }
end
end
Parametric.policy(:nullable_date) do
PARAMETRIC_DATE_EXP = /^\d{4}(-\d\d(-\d\d(T\d\d:\d\d(:\d\d)?(\.\d+)?(([+-]\d\d:\d\d)|Z)?)?)?)?$/i.freeze
coerce do |value, _key, _context|
if value.to_s =~ PARAMETRIC_DATE_EXP
Date.parse(value.to_s)
else
nil
end
end
meta_data do
{ type: :date }
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment