элемент params [] не передан в новый объект при создании действия - PullRequest
0 голосов
/ 02 июня 2011

У меня очень простая форма с действием контроллера скаффолда.схема БД для соответствующего вида выглядит следующим образом:

  create_table "uploads", :force => true do |t|
    t.string   "name"
    t.string   "location"
    t.string   "type"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "filename" 
  end

При отправке формы параметры содержат следующее (посмотрите на параметр конкретного типа):

{"utf8"=>"✓",
 "authenticity_token"=>"NGV4rS/tZDWg2ZdMLpiSbTJQBDmMyjfYyZqZ6GX/7Kc=",
 "upload"=>{"name"=>"AEGFAEF",
 "type"=>"Sales",
 "file"=>#<ActionDispatch::Http::UploadedFile:0x4dff958 @original_filename="Google.pdf",
 @content_type="application/pdf",
 @headers="Content-Disposition: form-data; name=\"upload[file]\"; filename=\"Google.pdf\"\r\nContent-Type: application/pdf\r\n",
 @tempfile=#<File:C:/Users/kaya/AppData/Local/Temp/RackMultipart20110602-2876-1wyskk3>>},
 "commit"=>"Create Upload"}

первыйкоманда в действии create UploadsController:

@upload = Upload.new(params[:upload])

, и сразу после этой строки у меня есть

@upload.type = nil

Я действительно не понимаю, как происходит сбой такой простой вещи.Может кто-нибудь, пожалуйста, помогите?

спасибо большое заранее.

Ответы [ 2 ]

1 голос
/ 02 июня 2011

В рельсах type является MagicFieldName и зарезервировано для наследования таблиц.Поскольку в вашем случае Upload ничего не наследует, запрос type к объекту вернет nil.

Известно, что использование MagicFieldNames в качестве имен столбцов вызывает много проблем.Вы можете проверить полный список http://oldwiki.rubyonrails.org/rails/pages/MagicFieldNames.

"Соглашение о значениях Rails по конфигурации. Это также верно в области разработки таблиц, где поля с определенными именами автоматически приобретают определенное поведение.

Active Record позволяет наследовать, сохраняя имя класса в столбце, который по умолчанию называется «тип» (может быть изменен путем перезаписи Base.inheritance_column). "

0 голосов
/ 02 июня 2011

Столбец «тип» зарезервирован для ИППП.Я не знаю, используете ли вы это.Если нет, измените «type» на другое имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...