さて、全体として、3 つの質問があるようです。
1.: 私の知る限り、db/migrations 内でモデル フィールドのデータ型を指定します。[...] これについての私の考えは正しいですか? これはレールで一般的な方法ですか、それとも回避策を使用しているだけですか?
はい、これについては正しいです。フィールドのデータ型はモデル内では表示されず、移行でのみ表示されます。
ところで、移行ファイルを手動で作成していることはめったにありません。rails コマンドを使用すると、マイグレーション ファイルが自動的に生成されます。たとえば、
rails g model User first_name:string last_name:string
id
これにより、User というモデルと、フィールド、first_name
、last_name
、およびタイムスタンプ フィールドを持つ users テーブルを作成する移行が作成されます。後で列を追加または削除したい場合は、そのための巧妙なトリックがあります。とにかく走れ
rails g migration add_fields_to_users field_name:field_type
また
rails g migration remove_fields_from_users field_name
.
field_name
、field_type
およびを適切と思われるように置き換えusers
ます。このコマンドは、フィールドを追加または削除するための移行を作成するため、それらを手動で記述する必要はありません。
2.: また、この db/migrations ファイルでテーブルの関係をどのように指定しますか。
あなたはそうしない。Rails は、has_many、belongs_to、has_and_belongs_to などの関連付けメソッドを通じてこれを処理します。この Rails guide to active record associations をご覧ください。データベース側で行う必要があることの 1 つは、1 対多のリレーションシップ用にforeign_id 列を追加するか、多対多のリレーションシップ用に結合テーブルを作成することです。たとえば、 users テーブルと pictures テーブルがあり、それぞれの写真がユーザーに属している場合、 user モデルhas_many :pictures
では 、picture モデルでは 、 pictures テーブルでは で呼び出されるbelongs_to :user
フィールドが必要です。user_id
整数型。
3.: 移行ファイルとモデル ファイルに構文エラーがないことを検証するにはどうすればよいですか。
あなたもそうではありません。を実行するだけでrake db:migrate
、何かが失敗した場合、場所と理由が表示されます。モデルに構文エラーがある場合は、サーバーを起動したとき、テストを実行したとき、または少なくともどこかでモデルを使用したとき (たとえば、モデルのメソッドを呼び出したとき) に通知されます。モデルのデータをどのように検証するかを意味している場合、これはまったく別の質問です。アクティブなレコードの検証とコールバックに関するこのガイドを参照してください。存在、一意性、長さなどを確認するための検証について詳しく説明しています。