一意性制約を定める
Modelに次のように記述する
validates_uniqueness_of :column_name
Migrationに次のように記述し、実行する
add_index :table_name, :column_name, :unique => true
validate?の挙動
前提条件:ModelAとModelBの間にリレーションが定められている
ModelA.valid?の戻り値がfalseの場合、
ModelB.valid?の戻り値もfalseとなる。
つまり、リレーションが定められているModelをsaveするときには、
すべてのModelでバリデーションが実行される。
saveで保存されるオブジェクト
前提条件:ModelAとModelBに多対多のリレーションが定められている
ModelA.saveを呼び出すと、下記のModelが保存される
- ModelA
- ModelB
- ModelAとModelBの関連テーブルのModel
(関連テーブルのインスタンスは自動的に生成される)
つまり、下記のようなコードで事足りる。
modelA = ModelA.new(hoge: 'hoge') #モデルAをインスタンス化
modelB = ModelB.new(foo: 'foo') #モデルBをインスタンス化
modelA.modelBs << modelB #モデルAとモデルBを関連付ける
modelA.save #関連テーブルのModelが自動生成され、すべてのModelが保存される
0 件のコメント:
コメントを投稿