Rails не добавляет поле модели для вставки запроса - PullRequest
0 голосов
/ 04 августа 2010

Я добавил столбец в базу данных в rails с помощью миграции и обновил new.html.erb, чтобы добавить поле в форму.

В параметрах запроса указаны правильные данные, но сгенерированный запрос на вставку каждый раз имеет пустое значение для столбца.

Вот параметры запроса:

{"commit"=>"Create",
  "assignment"=>{"start_date"=>"08/04/2010",
  "project_id"=>"5",
  "allotment"=>"50",
  "person_id"=>"33",
  "end_date"=>"08/05/2010"},
  "authenticity_token"=>"8f157a2a220caf716607162ce9557ab6505aab1a"}

и вот итоговая ошибка с запросом, показывающим нулевой столбец:

Mysql::Error: Column 'end_date' cannot be null: 
INSERT INTO `assignments` (`start_date`, `created_at`, `project_id`, `updated_at`, `allotment`, `person_id`, `end_date`)
VALUES('2010-08-04', '2010-08-04 03:36:21', 5, '2010-08-04 03:36:21', 50, 33, NULL)

Вот такая миграция:

class ChangeDates < ActiveRecord::Migration
  def self.up
    add_column :assignments, :end_date, :date, :null => false
    rename_column :assignments, :date, :start_date
  end

  def self.down
    remove_column :assignments, :end_date
    rename_column :assignments, :start_date, :date
  end
end

Я не могу понять, что пошло не так. Я откатился и перенес изменение пару раз без удачи. Я в тупике.

Ответы [ 2 ]

1 голос
/ 05 августа 2010

Чтобы ответить на ваш вопрос о attr_accessor, область будет вызывать метод accessors перед методом class, поэтому мы сохраняли значение в аксессоре, но когда вызывалось сохранение, он возвращал вызов метода.Я надеюсь, что это проясняет это на примере: http://codepad.org/gAppUMc4

Я делал одно и то же несколько раз.Это супер расстраивает.

0 голосов
/ 04 августа 2010

Если вы этого еще не сделали, попробуйте перезапустить ваш веб-сервер.Rails может кэшировать имена столбцов.

Какую версию Rails и какой веб-сервер вы используете?

...