У меня есть таблица контактов в приложении Rails 3.1.Я хочу, чтобы last_name принимала 40 символов, поэтому в моей модели я написал :length => { :maximum => 40 }
.Однако опечатка в моей миграции создала столбец last_name с :limit => 30
.
. Я удивился, почему мой тест Rspec не уловил это:
it "should allow last_name up to max length" do
long_field = "a" * 40
Contact.new(@attr.merge(:last_name => long_field)).should be_valid
end
, тогда я понял, что это только проверка модели,Если вместо этого я использую .create!
, тест не пройдёт:
it "should allow last_name up to max length" do
long_field = "a" * 40
Contact.create!(@attr.merge(:last_name => long_field)).should be_valid
end
Итак, вопрос в том, должен ли я всегда использовать .create!
при тестировании своих моделей?Или это слишком медленно?Как еще я могу убедиться, что мои определения модели и БД не конфликтуют?
Это также заставляет меня задаться вопросом, стоит ли мне просто оставлять строки как 255 в базе данных и проверять только длину в модели.