2016-01-07 2 views
0

В этом случае есть много людей с одинаковой проблемой, но никто не исправляет мою проблему. Я довольно новичок в рельсах, так что это, вероятно, что-то маленькое, что мне не хватает.ArgumentError: неправильное количество аргументов (1 для 2) для метода обновления в рельсах

я получаю следующую ошибку «ArgumentError: неверное число аргументов (1 на 2)»

Когда я запустить команду

Game.find(12).game_categories(55).update(approved_by: 1) 

Я передаю ключ approved_by и значение (целое число) 1, но это не сработает.

Я попытался это с другого поста я нашел

Game.find(12).game_categories(55).update(approved_by, 1) 

Но тогда я получаю ошибку «NameError: неопределенную локальную переменную или метод` approved_by»для главного: Object»

игра ассоциируется с game_categories с has_many, и столбец authorized_by определенно существует.

Создание нового game_category отлично работает с командой

Game.find(1).game_categories.create!(name: 'category name') 

Но я не могу обновить атрибуты.

Что происходит?

EDIT:

Я просто хочу, чтобы обновить одну запись (столбец 'approved_by' в таблице 'game_categories с идентификатором 55.

+0

Вы хотите обновить все записи с помощью 'game_categor (55) '? – Dusht

+0

Что вы хотите достичь, передав 55 в качестве параметра ассоциации? – user3409950

ответ

6
Game.find(12).game_categories(55)

возвращает отношение записей, а не одного Итак, чтобы обновить все игровые каталоги игры с помощью id 12, вы можете использовать

Game.find(12).game_categories(55).update_all(approved_by: 1)
+0

Итак, как мне обновить только game_category с id 55? – Rob

+0

'' 'Game.find (12) .game_categories.find (55) .update (approved_by: 1)' '' или просто '' 'GameCategory.find (55) .update (approved_by: 1)' '' – user3409950

+0

Спасибо, второй .find пропал! – Rob

Смежные вопросы