11
私は通常のフィールド(名前、電子メール、パスワードなど)と "team_invite_code"フィールドと "role"ポップアップメニューを持つユーザーサインアップフォームを持っています。ユーザーを作成する前にRailsのカスタム検証
- のみの場合には、ユーザーの役割が「子」である - 私はする必要があるでしょう:チームは、チームのテーブルに存在する場合team_invite_codeはチェック
- チェックそれは、同じ招待コード
- は私がRailsの2.3.6に適切な検証を書くことができますどのように
私は次のことを試してみましたが、それは私にエラーを与えている:
validate :child_and_team_code_exists
def child_and_team_code_exists
errors.add(:team_code, t("user_form.team_code_not_present")) unless
self.is_child? && Team.scoped_by_code("params[:team_code]").exists?
end
>> NameError: undefined local variable or method `child_and_team_code_exists' for #<Class:0x102ca7fa8>
UPDATE: この検証コードは動作します:
def validate
errors.add_to_base(t("user_form.team_code_not_present")) if (self.is_child? && !Team.scoped_by_code("params[:team_code]").exists?)
end
ありがとうFelix、私はメソッド定義の前に "プライベート"を追加しましたが、私は同じエラーが発生しています:( – Augusto
あなたのモデルにいくつかのコードを投稿してください。はい、あなたが質問で言及したように、パラメタを使用しないでください。パラメタは自己の属性であれば利用できます。 – felix
こんにちはフェリックス私は質問を更新しました、今、検証コードが動作します。それでも、私はparamsを処理する方法がわかりません。なぜなら、team_codeはユーザの属性(最初のものの後に多くのチームを持つことができます)ではない(そうすべきではありません)。 – Augusto