문제

다음과 같은 레일 마이그레이션이 있습니다.

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

"NULL"이 아닌 모든 필드가 먼저 모델에서 검증되므로 마이그레이션에서 허용 _null을 귀찮게 해야하는지 궁금합니다. "NOT NULL"이 데이터베이스에 어떤 이점을 제공하는지 잘 모르겠습니다.

도움이 되었습니까?

해결책

성능 또는 스토리지 효율성 측면에서 의미가 크지 않습니다. 그러나 많은 저수준 제약 조건을 데이터베이스 계층으로 푸시하는 것이 좋습니다. 우선, 레일의 미묘한 버그가 무작위로 이어지지 않을 것을 보장합니다. NULL 널없는 필드의 데이터. 마찬가지로, 동일한 데이터베이스에 대해 다른 앱을 실행하는 경우 유지 보수를 위해 중앙 위치에 제약을 받고 복제를 피하는 것이 매우 도움이됩니다.

다른 팁

Null은 컴퓨터가 당신을 주시하고 실수를하지 못하게 할 수있는 한 가지입니다.

이것은 O MySQL에 영향을 미치지 않는 것 같지만 최근 2 개의 고정 마이그레이션 문제를 알고 있어야합니다 (기본값을 지정하지 않은 경우).

http://blog.codefront.net/2008/05/04/living-on-the-dedge-of-rails-19-change_table-for-migrations-and-more/

http://antoniocangiano.com/2008/07/14/a-close-lok-at-three-rails-21-bugs/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top