рельсы ниль в форме - PullRequest
       29

рельсы ниль в форме

5 голосов
/ 03 сентября 2010

Это, вероятно, простой вопрос, но я заметил несколько ошибок, связанных с наличием пустых значений вместо nils ...

Если пользователь оставляет поле пустым в стандартном приложении rails, есть ли способоставить поле в базе данных равным NULL вместо того, чтобы вводить пустое значение?

По сути, проверка вроде @ model.info.nil?верните true вместо того, чтобы проверять, является ли он нулевым и пустым?

Ответы [ 2 ]

4 голосов
/ 03 сентября 2010

Я использую var.blank ?, потому что я получаю эти результаты в консоли Rails 3, работающей на Ruby 1.8:

>> nil.blank?
=> true
>> [].blank?
=> true
>> nil.empty?
NoMethodError: You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.empty?
        from (irb):4

Исторически, я не видел .empty?работа на ноль объектов.

1 голос
/ 03 сентября 2010

edit Как заметил brokenbeatnik , я перепутал blank? с empty?, мой плохой.

Вам не нужно проверять оба ноль и пустые значения.var.empty? вернет true даже для nil (см. API документы).Поэтому мне обычно удобнее использовать только пустую проверку.

Но если вы этого не хотите, вы можете преобразовать пустые значения в nils с помощью обратных вызовов активной записи .Что-то вроде attribute = nil if attribute.empty? каждый раз перед сохранением объекта.

...