Rails 3.2: ArgumentError: неправильное количество аргументов (2 вместо 1) при создании

Пытаясь создать экземпляр модели, я получаю следующую ошибку...

u = User.create
# or .where(...).first_or_create
# or .where(...).first_or_initialize
ArgumentError: wrong number of arguments (2 for 1)

У кого-нибудь есть такая же проблема с Rails 3.2?


person Rafael Xavier    schedule 20.01.2012    source источник


Ответы (1)


Вы перегрузили метод initialize вашей модели? В моем случае я перегрузил его:

def initialize(attributes=nil)
    ...
end

Что мне пришлось исправить:

def initialize(attributes = nil, options = {})
    ...
end

В Rails 3.2 фиксация 7c5ae0a88fc9406857ee362c827c57eb23fd5f95 (добавлена ​​поддержка безопасности массового назначения :as и :without_protection в AR.new) добавила больше аргументов к вышеуказанному методу, и поэтому моя предыдущая реализация не удалась.

person Rafael Xavier    schedule 23.01.2012
comment
Вау, это удивительный улов. Сообщение об ошибке и трассировка стека не дают абсолютно никакого намека на местонахождение этого. - person Trejkaz; 29.01.2013