Итак, для тех, кто получает подобное сообщение, основной ответ на вопрос: «Почему я получаю эту ошибку?»вопрос в том, что где-то вы указываете неправильное количество аргументов для метода, независимо от того, насколько сомнительным или неправильным вы считаете это - это почти наверняка опечатка в вашем коде где-то.Ниже приведен только один случай, с которым я столкнулся.
У меня есть функциональный тест с ошибками в следующем методе, в котором говорится, что первый оператор «Quality.create! (...» имеетмного аргументов, которые не имеют никакого смысла для меня.
Запуск Ruby 1.8, Rails 2.3.5
def reset_quality_lut
Quality.delete_all
Quality.create!(:value => 1, :name => "Scrap", :extended_name => " (only good for parts)" )
Quality.create!(:value => 2, :name => "Heavy use", :extended_name => " (needs work)" )
Quality.create!(:value => 3, :name => "Medium use", :extended_name => " (some functional damage)")
Quality.create!(:value => 4, :name => "Light use", :extended_name => " (cosmetic damage only)" )
Quality.create!(:value => 5, :name => "New", :extended_name => " (or like new)" )
Quality.create!(:value => 0, :name => "Any", :extended_name => "/all" )
end
Что метод должен сделать, это удалить, а затемзаново создайте все значения в этой таблице.
Вот запрошенная трассировка стека (обратите внимание, что я получаю то же самое, если заменяю '.create' на '.new (....).save ':
1) Error:
test_should_create_an_admin_user_on_app_setup(SetupControllerTest):
ArgumentError: wrong number of arguments (1 for 0)
app/controllers/setup_controller.rb:43:in `reset_quality_lut'
app/controllers/setup_controller.rb:23:in `create'
/test/functional/setup_controller_test.rb:78:in `test_should_create_an_admin_user'
В приложении этот контроллер позволяет настроить приложение после начальной настройки. Итак ...
www.myapp.com / setup / new
Приносит вас на страницу, где вы вводите имя пользователя и пароль для первого администратора. Когда это успешно, это действие становится недоступным, пока в базе данных есть 1 пользователь администратора.Если я попробую «Quality.new.save», я получу ошибку «ноль». Кажется, мой «новый» метод возвращает ноль по какой-то странной причине.