2017-10-31 19 views

答えて

2

あなたはassoc_constraintforeign_key_constraintのソースを見れば、あなたは彼らがadd_constraint(プライベート関数)と非常によく似呼び出しで終わることがわかります

assoc_constraint:

add_constraint(changeset, :foreign_key, to_string(constraint), :exact, assoc, {message, []}) 

がforeign_key_constraint:

add_constraint(changeset, :foreign_key, to_string(constraint), :exact, field, {message, []}) 

唯一の違いは、foreign_key_constraintの場合、制約の名前を指定し、assoc_constraintの場合はアソシエーションの名前を指定し、関数は外部キー名自体を計算します(Ectoマイグレーションと同じ規約を使用します)。それ以外は、どちらも同じです。 assoc_constraintは便宜上の関数なので、制約の正確な名前はアソシエーション名よりも長い必要はありません。

関連する問題