C'è un modo più breve per effettuare le seguenti operazioni (Scorciatoia per prelevare due attributi da un oggetto ActiveRecord?
@user.employees.map { |e| { id: e.id, name: e.name } }
# => [{ id: 1, name: 'Pete' }, { id: 2, name: 'Fred' }]
User
has_many
dipendenti. Entrambe le classi ereditano da ActiveRecord::Base
.
due cose che non mi piace di quanto sopra
- E ' carica gli impiegati in memoria prima della mappatura,
- È prolisso (suppongo soggettivo)
C'è un modo migliore?
alcuna ragione per costruire un hash invece di lavorare con le istanze dei dipendenti (con i soli due colonne caricate con un 'select')? – tokland
Sì, lo so che è un po 'forzato. Ho appena notato il metodo 'pluck' e mi sembra che ci dovrebbe essere una cotta per più di un attributo. –
c'è un problema aperto con più di 1 attributo: https://github.com/rails/rails/pull/5472. Inoltre, controlla questo: https://github.com/ernie/valium – tokland