
Security News
CISA’s 2025 SBOM Guidance Adds Hashes, Licenses, Tool Metadata, and Context
CISA’s 2025 draft SBOM guidance adds new fields like hashes, licenses, and tool metadata to make software inventories more actionable.
human_attribute_values
Advanced tools
human_attribute_values is a Rails plugin which provides translation for model attribute values using the Rails I18n API (analogously to human_attribute_name).
gem install human_attribute_values
The gem defines human_attribute_value
as instance and class method on ActiveRecord::Base
and ActiveModel::Model
.
To translate a value it uses the I18n API. The translations are looked up from the current locale file under the key 'activerecord.values.model_name.attribute_name.value'
respectively 'activemodel.values.model_name.attribute_name.value'
by default.
en:
activemodel:
values:
file_model:
content_type:
application/pdf: PDF
application/vnd_openxmlformats-officedocument_spreadsheetml_sheet: Excel/Calc
activerecord:
values:
schroedinger:
cat_status:
dead_and_alive: The box is still closed.
alive: You opened the box and kitty purrs.
# For ActiveRecord
class Schroedinger < ActiveRecord::Base
enum cat_status: {dead_and_alive: 0, alive: 1, dead: 2}
end
# Translation on instances by passing the attribute to be translated
Schroedinger.new(cat_status: :dead_and_alive).human_attribute_value(:cat_status)
=> "The box is still closed."
# Translation on the model class by passing attribute and value
Schroedinger.human_attribute_value(:cat_status, :alive)
=> "You opened the box and kitty purs."
# If there is no translation specified in the locale, the stringified value is returned
Schroedinger.human_attribute_value(:cat_status, :dead)
=> "dead"
# For ActiveModel (the same except the lookup namespace)
class FileModel
include ActiveModel::Model
attr_accessor :content_type
end
file = FileModel.new(content_type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
file.human_attribute_value(:content_type)
=> "Excel/Calc"
FileModel.human_attribute_value(:content_type, 'application/pdf')
=> "PDF"
FileModel.human_attribute_value(:content_type, 'text/plain')
=> "text/plain"
To translate boolean values, the key must be specified as string:
en:
activerecord:
values:
user:
active:
'true': active
'false': inactive
If there is a reason to translate numbers, their keys must also be given as strings. For decimal values the dot is replaced by an underscore for the lookup.
en:
activerecord:
values:
magic_number:
value:
'3_14': Pi
'42': 'the answer to life, the universe and everything'
Starting with version 1.2.0, dots in strings and symbols (actually in all values) are also replaced by an underscore for the lookup (before this was only done for numbers).
For models with single table inheritance (STI), the lookup will start with the translations for the class and go up through the class hierarchy and use the translation for the closest parent if there is any.
FAQs
Unknown package
We found that human_attribute_values demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISA’s 2025 draft SBOM guidance adds new fields like hashes, licenses, and tool metadata to make software inventories more actionable.
Security News
A clarification on our recent research investigating 60 malicious Ruby gems.
Security News
ESLint now supports parallel linting with a new --concurrency flag, delivering major speed gains and closing a 10-year-old feature request.