我有以下rails迁移:
create_table :articles do |t| t.integer :user_id, :allow_null => false t.integer :genre_id, :allow_null => false t.string :url, :limit => 255, :allow_null => false t.string :title, :limit => 60, :allow_null => false t.text :summary, :limit => 350, :allow_null => false t.integer :votes_count, :default => 0 t.datetime :published_at, :default => nil t.timestamps end
首先在模型中验证所有"NOT NULL"的字段,所以我想知道我是否需要在迁移中烦扰allow_null?我不确定"NOT NULL"给数据库带来了什么好处,如果有的话.
如果您的性能或存储效率方面的意思不大.但是,将尽可能多的低级约束推送到数据库层是一种很好的做法.首先,它保证Rails中的一个微妙的错误不会导致NULL
非空字段中的一些随机数据.同样,如果您针对同一个数据库运行另一个应用程序,那么将约束放在一个中心位置进行维护并避免重复将非常有帮助.