2011-10-20 13 views
0

私はチームを作成するためのフォームを使用しています(モデルはチームです)。Railsフォーム検証WIthデータベース呼び出しと確認

フォームは(TeamMemberモデルを介して)チームにメンバーを追加します。

各チームは企業で働いています。すべてのユーザーは会社に属します。

私は現在、TeamMemberモデルの検証を行っています。これは、ユーザーがチームとは異なる会社で働いているときにチームメンバーになるのを防ぎます。

最近、チームが別の会社で働くメンバーを追加する必要がある場合があるので、この機能を変更するように求められました。

私の単純な検証は複雑になっています。

提案されたチームメンバーが別の会社で働いているときに警告を表示し、変更を保存する前に確認できるかどうかを確認する(はい/いいえ)ようにする必要があります。

これを達成するための、きれいな、レールに優しい方法は何ですか?私はAjaxソリューション(ライトボックスかもしれない)があると思いますが、それを実装する最善の方法や、誰かがこの状況を処理するための巧妙なGem/Pluginを既に持っているかどうかはわかりません。

答えて

0

これまでのようにカスタム検証を使用して、dbに保存しないモデルに変更可能な属性を追加します。たとえば、

class TeamMember < ActiveRecord::Base 
    attr_accessor :user_confirmed 
    after_intialize :setup 

    def setup 
    self.user_confirmed = false 
    end 
end 

self.user_confirmedがfalseの場合、検証方法にチェックを追加する必要があります。上記で説明したdb関係に加えて、それが無効である場合。その後、あなたのビューに、if文を追加します。CHECK_BOXメソッドは文字列を使用しているため

<% if @team_member.errors[:key_you_use_to_add_to_base].first == "Error Message" %> 
    <%= f.label :user_confirmed, "User works for another company, are you sure?" %> 
    <%= f.check_box :user_confirmed, {}, "true", "false" %> 
<% end %> 

は覚えておいて、ブールにあなたのparamsハッシュにその属性の結果を変換するyoullの必要があります。

私はそれをするべきだと思います。他の検証エラーが同じキーに追加される可能性がある場合は、ifステートメントを調整する必要があることに注意してください。

+0

ありがとう、それは動作します。 – Kevin

+0

あなたは大歓迎です。 – agmcleod

関連する問題