Qual è la differenza tra find
, where
e find_by_id
? Funzionano tutti quando si tenta di trovare un utente con un ID.Qual è la differenza tra find, where e find_by_id?
risposta
La differenza è ciò che restituiscono quando viene trovato un record o quando non viene trovato. Prendere in considerazione i seguenti esempi:
>> User.create name: 'THE USER' # creates a user with id = 1
>> User.find(1) # returns the user
>> User.find_by_id(1) # returns the user
>> User.where(id: 1).first # returns the user
Come si può vedere, un utente esistente può essere recuperata utilizzando uno dei 3 metodi. La grande differenza con l'utilizzo di where
è comandi a catena (ovviamente, senza chiamare first
prima.)
puoi Diamo un'occhiata a quando si tenta di trovare un record che non è esistente
>> User.find(2) # raises an exception
>> User.find_by_id(2) # nil
>> User.where(id: 2).first # nil
Così qui, è ovvio che quando si utilizza find
per cercare un record che non esiste, si ottiene un'eccezione. Questa eccezione è ActiveRecord::RecordNotFound
che esegue il rendering di un 404 nell'ambiente di produzione.
Spero che questo aiuti!
UPDATE
rotaie 4 utilizza la seguente sintassi per find_by
>> User.find_by(id: 1) # returns nil if there's no user with an id of 1
>> User.find_by!(id: 1) # raises ActiveRecord::RecordNotFound when no record is found
find
=> questo è usato per trovare fila id
. Ciò restituirà il singolo record.
YourModel.find(2)
Address.find(1)
find_by
=> questo è usato per ottenere fila eventuali attributi di registrazione. Ciò restituirà il primo record di corrispondenza se la condizione corrisponde.
YourModel.find_by_attrname("value")
Address.find_by_street_name_and_city("Andheri", "Newyork")
Addess.find_by_id(4)
where
=> questo è usato ottenere record attivi in base alle condizioni per tornare relazione record attivo (cioè) può essere zero o più record.
YourModel.where(:attrname => "something")
Address.where(:city => "Newyork")
trovare => Questo ritorno singolo record se il primary_key data (id) esiste nel sistema tuttavia in darà un errore.
Model.find(required_id_value)
find_by => Ciò restituirà singolo record dipende l'attributo dato, e se il valore dell'attributo non è presente nel DB verrà restituito nil.
Model.find_by_name("your name")
nome qui è l'attributo e deve essere presente nel proprio Modal.
dove => Ciò restituirà una relazione di record attiva con zero o più record che è necessario utilizzare per restituire solo un record o zero nel caso in cui vengano restituiti zero record.
Model.where(id: id_value).first
** Record.find (0) ** genera ActiveRecord :: RecordNotFound: Impossibile trovare il record con 'id' = 0' ** Record.find_by (id: 0) ** restituisce 'nil' Record.find_by_id (0) restituisce anche nil sebbene sia deprecato nelle versioni successive dei binari. ** Record.where (id: 0) ** restituisce una matrice vuota – Hanmaslah
- 1. Qual è la differenza tra $ get e $ find in JavaScript?
- 2. Qual è la differenza tra Matcher.lookingAt() e find()?
- 3. Differenza tra Mac `find` e Linux` find`
- 4. Differenza tra 'find -delete' e 'rm -rf'?
- 5. Qual è la differenza tra = e: =
- 6. Qual è la differenza tra Verilog! e ~?
- 7. Qual è la differenza tra? : e ||
- 8. qual è la differenza tra [[], []] e [[]] * 2
- 9. Qual è la differenza tra $ e $$?
- 10. Qual è la differenza tra ("") e (null)
- 11. Qual è la differenza tra dict() e {}?
- 12. Qual è la differenza tra " " e ""?
- 13. Qual è la differenza tra {0} e ""?
- 14. Qual è la differenza tra `##` e `hashCode`?
- 15. Qual è la differenza tra {0} e +?
- 16. Qual è la differenza tra .ToString() e + ""
- 17. qual è la differenza tra:.! e: r !?
- 18. Qual è la differenza tra find, findAll e findQuery in ember-data
- 19. qual è la differenza tra "con" e "carico" in laravel
- 20. Find() vs. Where(). FirstOrDefault()
- 21. Entity Framework Find vs. Where
- 22. Qual è la differenza tra "LIKE" e "=" in SQL?
- 23. Qual è la differenza tra "pacchetto" e "modulo" in Frege?
- 24. Qual è la differenza tra IOrderedQueryable e IQueryable?
- 25. Qual è la differenza tra più clausole where e && operator in LINQ-to-SQL?
- 26. In SQL/MySQL, qual è la differenza tra "ON" e "WHERE" in una dichiarazione di join?
- 27. In Rails, qual è la differenza tra find_each e dove?
- 28. Qual è la differenza tra Monad.Reader e le (->) monadi?
- 29. Qual è la differenza tra "$ (questo)" e "questo"?
- 30. jQuery: Qual è la differenza tra "$ (questo)" e "questo"?
Si dovrebbe notare che tutti i '' find_by_ * metodi sono deprecrated in rotaie 4 a favore di 'find_by (*: ...)' ecco che sarebbe BE: 'find_by (id: ...) ' – pjam
wow non lo sapevo. Grazie! perché non è quello menzionato qui? http://edgeguides.rubyonrails.org/4_0_release_notes.html – jvnill