I’m trying to do something pretty simple, and I’m wondering if there’s an obvious easy way I’m missing. I have a float-as-string in memory. I want to persist it as a float, but cast it to/from a string when it’s saved and loaded. I know I can use an Ecto custom type. Is there a more terse way anyone can point me to? This seems like a typical thing that is probably done all the time.
I’m not thats a common requirement (maybe just me - i;ve never had a use case for that). I think a custom type is the right way to do it if thats your requirement though. Everything else leaves room for error or forgetfulness.
You can use some Postgres type-casting on the way in from the database with a fragment:
from p in Post, select: fragment("?::text", p.float_thing)
But whilst terse its hackish for sure.
Or you can make an Ecto ‘Type’ (see the docs, it’s easy, you just define a module with a couple functions and use that module name as the type).