Форма не использует значения по умолчанию из миграции - PullRequest
0 голосов
/ 07 июля 2010

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

Поэтому, если я отправляю форму, не выбирая ничего из выпадающего меню, я получаю жалобу на Mysql, пытаясь вставить NULL. Я думал, что где-то вдоль строк пустая строка из формы будет использовать значение миграции по умолчанию / значение по умолчанию в MySQL вместо того, чтобы пытаться вставить NULL?

Я что-то упустил? Заранее спасибо.

Редактировать: некоторый код ... (упрощенно). «book_type» действительно должен быть «book_type_id», но не обращайте на это внимания.

Сообщение об ошибке Mysql:

Mysql :: Ошибка: столбец 'book_type' не может быть пустым: INSERT INTO book_details (book_id, book_type, ...) VALUES (1, NULL, ...)

Миграция:

class CreateBookDetails < ActiveRecord::Migration
  def self.up
    create_table :book_details do |t|
      t.integer :book_id, :null => false, :default => 0
      t.integer :book_type, :null => false, :default => 0
      ...

      t.timestamps
    end
  end

  def self.down
    drop_table :book_details
  end
end

1 Ответ

1 голос
/ 07 июля 2010

у вас есть 3 варианта:

1 - измените миграцию, удалите ": null => false", чтобы избежать ошибок.Вы сказали, что в некоторых случаях это может быть не выбрано, верно?

2 - отредактируйте модель и добавьте обратный вызов before_save, чтобы изменить значение «0», если оно оставлено пустым в форме.

3 - создать в раскрывающемся списке «опцию» с пустой меткой и значением «0».таким образом, при отправке формы значение остается не менее 0 (как определено в миграции)

, это зависит от ваших потребностей; -)

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