Rails 没有为 DB 中的文本字段设置 NULL?

Jac*_*cob 3 ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 activeadmin

我正在使用 ActiveAdmin,如果我编辑一个条目并将 TEXT 字段留空,则在数据库中它会被设置为空字符串——当它真的应该被设置为 NULL 时(并且这些字段的架构上允许 NULL) .

有没有其他人遇到过这个问题并解决了它?

Ama*_*dan 5

(从评论中移出,因为我发现关于它的评论越来越多):

我没有使用过 ActiveAdmin,但是...有什么理由不将空字符串存储为空字符串而是将其存储为 NULL?

我认为空字符串到 Nil 的转换永远不应该是自动的,因为它违反了最少的惊喜。如果我错了,我会很感激文档参考说明相反...

至于解决它,我想这可能会奏效:

before_validation do
  self.mytextfield = nil if self.mytextfield && self.mytextfield.empty?
end
Run Code Online (Sandbox Code Playgroud)

或者,更系统地,这个 gem

class MyModel < ActiveRecord::Base
  nilify_blanks :only => [:mytextfield]
end
Run Code Online (Sandbox Code Playgroud)