Como você exclui um objeto ActiveRecord?
Eu olhei para o Active Record Querying e ele não tem nada a excluir que eu possa ver.
Excluir por
id,Excluir o objeto atual como:
user.remove,Você pode excluir com base em uma
wherecláusula?
Como você exclui um objeto ActiveRecord?
Eu olhei para o Active Record Querying e ele não tem nada a excluir que eu possa ver.
Excluir por id,
Excluir o objeto atual como: user.remove,
Você pode excluir com base em uma wherecláusula?
Respostas:
É destroye destroy_allmétodos, como
user.destroy
User.find(15).destroy
User.destroy(15)
User.where(age: 20).destroy_all
User.destroy_all(age: 20)
Como alternativa, você pode usar deletee delete_allque não aplicará :before_destroye :after_destroyretornos de chamada ou qualquer opção de associação dependente.
User.delete_all(condition: 'value')permitirá excluir registros sem uma chave primária
Nota : do comentário de @ hammady, user.destroynão funcionará se o modelo do usuário não tiver uma chave primária.
Nota 2 : a partir do comentário de @ pavel-chuchuva, as destroy_allcondições e delete_allcondições foram descontinuadas no Rails 5.1 - veja guias.rubyonrails.org/5_1_release_notes.html
User.find_by(username:"bob") é bom para identificar o registro para destruir ou excluir também.
Há delete, delete_all, destroy, e destroy_all.
Os documentos são: documentos antigos e documentos do Rails 3.0.0
deletenão instancia os objetos, enquanto destroyfaz. Em geral, deleteé mais rápido que destroy.
deleteé mais rápido, mas ignora as chamadas de retorno que você pode ter definidos no modelo
User.destroyUser.destroy(1)excluirá o usuário com id == 1e :before_destroye :after_destroyretornos de chamada. Por exemplo, se você possui registros associados
has_many :addresses, :dependent => :destroy
Depois que o usuário é destruído, seus endereços também serão destruídos. Se você usar a ação de exclusão, os retornos de chamada não ocorrerão.
User.destroy, User.delete
User.destroy_all(<conditions>) ou User.delete_all(<conditions>)
Aviso : Usuário é uma classe e usuário é um objeto de instância
User.destroy_all()executa retornos de chamada; portanto, antes de excluir qualquer coisa, carrega registros. São duas instruções SQL e não uma. Além das implicações de desempenho, isso também tem implicações de simultaneidade. A chamada mais segura ignora retornos de chamada; User.delete_all()emitirá apenas um único DELETE FROM...comando.