Module: ForSelect::ClassMethods
- Defined in:
- lib/rails/for_select.rb
Instance Method Summary collapse
-
#for_select(id: :id, name: :name, cache_key: :updated_at) ⇒ Object
Allow to call #for_select on each class inheriting from ActiveRecord::Base.
Instance Method Details
#for_select(id: :id, name: :name, cache_key: :updated_at) ⇒ Object
Allow to call #for_select on each class inheriting from ActiveRecord::Base. Will generate a tuples array for use in Rails’ form’s select fields. It will cache the resulting tuples array.
GameSystem.for_select # => [["name", 1], ["other name", 2], ...]
For those models that doesn’t defaultly have a name, or that should use another id field, you can customize it like this.
GameSystem.for_select(id: :uuid) # => [["name", 'uuid1'], ["other name", 'uuid2'], ...]
GameSystem.for_select(name: :full_name) # => [["full name", 1], ["other full name", 2], ...]
If you’re records doesn’t have timestamps you can use another cache key.
GameSystem.for_select(cache_key: :created_on) # => [["name", 1], ["other name", 2], ...]
17 18 19 20 21 |
# File 'lib/rails/for_select.rb', line 17 def for_select(id: :id, name: :name, cache_key: :updated_at) Rails.cache.fetch [self.to_s.tableize, :select, self.maximum(cache_key)] do pluck(name, id) end end |