それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

symfonyでuniqueキー制限を作る

アカウント発行など、マスタ作成で面倒なのがunique確保。DBでuniqueキー以外を受け付けない設定にしててエラーをcatchするか、またはUPDATE前にSELECT実行して調べる、などの方法で重複を防ぎつつユーザーに重複警告を出す処理。やり方が幾通りかあるので実装が人によってまちまち。イライラ

それsymfonyなら簡単にできるよ。

それsf ってことで、とても楽ちん。Railsだとどうなんだろ。

apps/MYAPP/modules/MYMODULE/validate/edit.yml を書けば出来た。

fillin:
  enabled: true
fields:
  subscribers{address}:
    required:
      msg: "アドレスは必須です。"
    sfPropelUniqueValidator:
      class: Subscribers
      column: address
      unique_error: "このメールアドレスはすでに利用されています"
...


詳しくはマニュアルにも載ってる。スゲー簡単なので例みれば誰でも出来る。

sfPropelUniqueValidator:  #これがUNIQUEをチェックするValidator
  class: Subscribers      #uniqueを探すClass。ここではリレーション先
  column: address         #uniqueキーが格納されているカラム
  unique_error: "error"   #エラーメッセージ

edit.ymlは新規作成&編集に適用される(generator利用時)普通はファイル名は ACTION_NAME.ymlだっけ?

uniqueキープも自動生成されていると嬉しいなぁ


uniqueキーチェックが、schema.ymlに従って自動生成すると嬉しい。出来ないかなぁ。自分でPake書くか・・・