2013-06-17 4 views
0

Я не совсем уверен, что происходит, когда я отправляю запрос на свой API-интерфейс rails, но у меня получается какое-то странное поколение данных.Rails автоматическая генерация «Create» hash в параметрах

Когда я сгенерировал Model и Controller и сделал сетевые запросы для создания этого объекта с помощью JSON, я напишу строку JSON, которая содержит только параметры для создания в корне хэша. Затем я создаю его так:

Model.new(params[:model]) 

Для меня это было странно, потому что я никогда не посылал хеш с ключом «модель», при этом я не обернуть мои параметры хэш с ключом «модели».

Когда я просматриваю параметры для сетевого вызова, я вижу хэш со всеми моими параметрами, точно так же, как я их отправил, но хеш параметров теперь включает в себя, по-видимому, автоматически генерируемый хэш с ключом «модель» и значение - это мой исходный хэш.

Для меня это означает, что Rails генерирует это в какой-то момент. Однако, похоже, он работал нормально, поэтому я не слишком беспокоился.

Проблема в том, что у меня теперь есть другой API с Model, но он не генерирует внутренний хэш автоматически. Затем я попытался просто использовать params на моем Model, но он жалуется:

ActiveModel::MassAssignmentSecurity::Error (Can't mass-assign protected attributes: format, controller, action): 

Я не уверен, что происходит вообще, или как это исправить, кроме задания параметров по отдельности, а не пропускании params хэш непосредственно или обертывание моего исходного сетевого вызова с помощью хэша model.

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

ответ

1

Вам нужно добавить attr_accessible к вашей модели для элементов, которые вы проходящими в Model.new Допустим, у вас есть столбцы name и size в вашей модели. Тогда вы должны положить что-то вроде этого:

attr_accessible :name, :size 
+0

К сожалению, у меня есть это для обеих моделей. Я могу использовать любой другой общий метод в общем формате, кроме create, так как он не генерирует дополнительный хэш. – RileyE

+0

Можете ли вы вставить первую строку журнала консоли разработки рельсов, которая содержит все атрибуты, переданные в запросе? –

+0

Вы не предоставили образец кода из формы, которую вы отправляете ... –

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