Удаление записи базы данных User.find_by_id().address.destroy

Я пытаюсь удалить результат адреса отсюда. Я могу добавить новый адрес, но не могу его удалить.

 $User.find_by_id(19).update(address: "canada")

Я попробовал это, но это не работает

 $User.find_by_id(19).destroy(address: "canada")

Выход

$User.find_by_id(19).destroy(address: "canada")
  User Load (1.3ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1  [["id", 19]]
Traceback (most recent call last):
       10: from bin/rails:4:in `<main>'
        9: from bin/rails:4:in `require'
        8: from /app/vendor/bundle/ruby/2.6.0/gems/railties-4.2.11.1/lib/rails/commands.rb:17:in `<top (required)>'
        7: from /app/vendor/bundle/ruby/2.6.0/gems/railties-4.2.11.1/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
        6: from /app/vendor/bundle/ruby/2.6.0/gems/railties-4.2.11.1/lib/rails/commands/commands_tasks.rb:68:in `console'
        5: from /app/vendor/bundle/ruby/2.6.0/gems/railties-4.2.11.1/lib/rails/commands/console.rb:9:in `start'
        4: from /app/vendor/bundle/ruby/2.6.0/gems/railties-4.2.11.1/lib/rails/commands/console.rb:110:in `start'
        3: from (irb):2
        2: from (irb):2:in `rescue in irb_binding'
        1: from /app/vendor/bundle/ruby/2.6.0/gems/activerecord-4.2.11.1/lib/active_record/transactions.rb:280:in `destroy'
ArgumentError (wrong number of arguments (given 1, expected 0))

Загрузка пользователя @dbugger (1,3 мс) ВЫБЕРИТЕ "users".* ИЗ "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 19]] Traceback (последний вызов): 10: from bin/rails:4:in <main>' 9: from bin/rails:4:in require'

Nour Abu Khajil 08.05.2024 02:40

@dbugger я просто добавляю это

Nour Abu Khajil 08.05.2024 02:43

Destroy не принимает никаких аргументов. Он уничтожит пользователя, найденного по идентификатору

dbugger 08.05.2024 04:35
User.find(19).update(address: nil)
AbM 08.05.2024 09:48

Вопрос не имеет смысла. update(address: "canada") обновляет столбец в строке базы данных. destroy удаляет всю строку из базы данных. Если вы пытаетесь обнулить значение, вы должны использовать update(address: nil). См. xyproblem.info

max 08.05.2024 12:48
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
54
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Пожалуйста, удалите аргумент в методе уничтожения. Этот метод не принимает никаких аргументов, просто нужен идентификатор записи.

Вы можете изменить свой фильтр следующим образом:

User.find_by(id: 19, address: "canada").destroy

это уничтожит пользователя или адрес? потому что я хочу удалить только адрес

Nour Abu Khajil 08.05.2024 06:46

Это удалит строку пользователя.

akbarbin 08.05.2024 08:23

Что значит удалить адрес? Есть ли поле адреса в таблице users?

akbarbin 08.05.2024 08:23
Ответ принят как подходящий

Я думаю, вы пытаетесь обновить значение поля address с Canada на nil. В этом случае вам нужно обновить, а не уничтожить:

User.find(19).update(address: nil)

попробуйте аннулировать адрес, если он является собственностью Пользователя

User.find(19).update!(address: nil)

или попробуйте удалить адрес, если он связан с пользователем

User.find(19).address.destroy!

Другие вопросы по теме