Never thought about using a separate module to keep them grouped but it is a really good technique.
I topically use this in a way in which the constants end up being almost private.
I either wrap the value checks in small predicate methods:
defred?color==COLORS_REDend
Or if I need them with active record I create scopes like the ones in the post.
Even in tests I try to avoid using them for setup and if I have factory_bot at hand I create traits for the different values instead.
This way you end up with code which is a bit more decoupled from this specific implementation detail and when your constant is not enough and you need to build an object instead you'll save a lot of grepping and seddingπ
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
Never thought about using a separate module to keep them grouped but it is a really good technique.
I topically use this in a way in which the constants end up being almost private.
I either wrap the value checks in small predicate methods:
Or if I need them with active record I create scopes like the ones in the post.
Even in tests I try to avoid using them for setup and if I have factory_bot at hand I create traits for the different values instead.
This way you end up with code which is a bit more decoupled from this specific implementation detail and when your constant is not enough and you need to build an object instead you'll save a lot of
grep
ping andsed
dingπ