Я пытаюсь удалить результат адреса отсюда. Я могу добавить новый адрес, но не могу его удалить.
$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 я просто добавляю это
Destroy не принимает никаких аргументов. Он уничтожит пользователя, найденного по идентификатору
User.find(19).update(address: nil)
Вопрос не имеет смысла. update(address: "canada")
обновляет столбец в строке базы данных. destroy
удаляет всю строку из базы данных. Если вы пытаетесь обнулить значение, вы должны использовать update(address: nil)
. См. xyproblem.info
Пожалуйста, удалите аргумент в методе уничтожения. Этот метод не принимает никаких аргументов, просто нужен идентификатор записи.
Вы можете изменить свой фильтр следующим образом:
User.find_by(id: 19, address: "canada").destroy
это уничтожит пользователя или адрес? потому что я хочу удалить только адрес
Это удалит строку пользователя.
Что значит удалить адрес? Есть ли поле адреса в таблице users
?
Я думаю, вы пытаетесь обновить значение поля address
с Canada
на nil
. В этом случае вам нужно обновить, а не уничтожить:
User.find(19).update(address: nil)
попробуйте аннулировать адрес, если он является собственностью Пользователя
User.find(19).update!(address: nil)
или попробуйте удалить адрес, если он связан с пользователем
User.find(19).address.destroy!
Загрузка пользователя @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'