Как правило, лучше (и почему) проверять атрибуты в модели или в определении базы данных?
Для (тривиального) примера:
В пользовательской модели:
validates_presence_of :name
в сравнении с миграцией:
t.string :name, :null => false
С одной стороны, включение его в базу данных кажется скорее гарантией от проникновения каких-либо плохих данных. С другой стороны, включение этой модели в модель делает вещи более прозрачными и более понятными, группируя их в код с остальными валидациями. Я также подумал о том, чтобы сделать то и другое, но это кажется не сухим и менее ремонтопригодным.