Qual è il modo più semplice per impostare tutti gli attributi (tranne id, created_at, updated_at) di un oggetto ActiveRecord su zero?Qual è il modo più semplice per impostare tutti gli attributi (tranne id, created_at, updated_at) di un oggetto ActiveRecord su zero?
10
A
risposta
5
C'è una serie chiamata attribute_names
sul modello, che include tutti gli attributi, in modo da utilizzare rifiutano di filtrare gli attributi:
class Model < AR::Base
def nilify_attributes!(except = nil)
except ||= %w{id created_at updated_at}
attribute_names.reject { |attr| except.include?(attr) }.each { |attr| self[attr] = nil }
end
end
Vedi http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-i-attribute_names
5
Se è una cosa di una volta, si potrebbe fare questo nel controller:
@record.update_attributes(Hash[*@record.attributes.except('created_at','updated_at','id').map { |a| [a.first, nil] }.flatten])
2
So che questo è stato già risposto. Mi sono imbattuto anche nella stessa situazione che ha portato a un'altra soluzione.
record.dup.attributes.keep_if{|k,v| !v.nil?}
Qui record è l'oggetto record attivo.
+0
Questo ha funzionato per me e sto usando Rails 4.2. Una nave è fantastica. – onebree
Problemi correlati
- 1. Qual è il modo più semplice per rimuovere tutti gli attributi da un XML in C#?
- 2. Rinominare le colonne created_at, updated_at di ActiveRecord/Rails
- 3. Eloquente sincronizzazione e created_at/updated_at
- 4. È comune impostare gli oggetti su zero?
- 5. Il modo più semplice per impostare il cursore in attesa, quindi ripristinare tutti gli elementi
- 6. Qual è il modo più semplice per ripristinare ERRORLEVEL a zero?
- 7. Scorciatoia per prelevare due attributi da un oggetto ActiveRecord?
- 8. Qual è il modo più semplice per scorrere su un array di array?
- 9. consentono tutti gli attributi per gli attributi nidificati
- 10. Qual è il modo migliore per impostare tutti i valori di una matrice tridimensionale su zero in Java?
- 11. Il modello Backbone .toJSON() non esegue il rendering di tutti gli attributi su JSON
- 12. Rails ActiveRecord - Ricerca su più attributi
- 13. Cambiare il nome di created_at del laravel e updated_at
- 14. Qual è il modo più semplice per eseguire gli script Python in un server cloud?
- 15. Query activerecord Rails confrontando due attributi dello stesso record
- 16. Qual è il modo più semplice per bloccare un oggetto in Django
- 17. Qual è il modo più semplice per impostare i messaggi di dati binari personalizzati in Java?
- 18. Qual è il modo più semplice per clonare in profondità (copiare) un oggetto Scala mutabile?
- 19. C'è un modo per specificare una scorciatoia CSS per "tutti gli elementi tranne il primo/ultimo"?
- 20. Qual è il modo più semplice per configurare la spaziatura dell'indentazione su un ObjectMapper Jackson?
- 21. Come ottengo tutti gli attributi di un modello meno qualche
- 22. Qual è il modo più semplice per mantenere oggetti java?
- 23. Qual è il modo più semplice per creare un sito web per la prenotazione degli appuntamenti?
- 24. C#: qual è il modo più semplice per sottrarre tempo?
- 25. Qual è il modo più semplice per trasmettere un segnale su MGT di Xilinx FPGA?
- 26. Entity Framework 6: oggetto clone tranne ID
- 27. Qual è il modo più semplice e sicuro per autenticare gli utenti tramite AJAX?
- 28. Qual è un modo semplice per verificare se qualche processo di un determinato ID è attualmente in esecuzione su Linux?
- 29. C'è un modo per rendere privati gli attributi di Rails ActiveRecord?
- 30. Qual è il modo più semplice per convertire questo documento XML nel mio oggetto?
Onestamente questo sembra essere un caso molto speciale, potresti spiegare un po 'perché è necessario - forse, c'è una soluzione migliore. Nel frattempo, controlla la mia risposta. – lwe
Sì, lo so che è un po 'strano, ma credimi era necessario. Grazie per la tua risposta, ha funzionato alla grande. – ben
prego :) – lwe