2011-06-30 16 views
-1

私のRailsアプリケーションにはUser_TeamモデルでリンクされたUserモデルとTeamモデルがあります。RailsアソシエーションとMVC

私がしようとしているのは、それを作成するために使用されたparamsに有効なteam_codeパラメータがある場合にのみ、Railsに検証して新しいユーザーを作成することです。

は基本的に私のことを行う必要があります

  1. チェックチームテーブル
  2. 見てteam_codeを持つチームはこの場合のみで
  3. はユーザー
  4. リンクユーザーの作成を許可存在する場合チームに

これを行うにはどの方法が最適ですか?ロジックはどこに置くべきですか?コントローラーで?ユーザー検証モデルでは?

ほんの少しのヒントでも役に立ちます。

UPDATE#1 team_codeはチームモデルの属性です。チームは以前に作成されます(ユーザー作成時ではありません)。私は、作成するために各ユーザーが、既存のチームがユーザー作成時に入力する必要があります。

おかげで、 アウグスト

+1

こんにちは。あなたは 'team_code'が何であるかは言いませんでした。チームモデルの属性ですか?ユーザーの作成と同時にチームを作成できるようにしたいのですか、既存のチームを選択するだけですか?基本的には、各ユーザーに少なくとも1つのチームが関連付けられていることを確認するだけですか? –

+0

こんにちはロベルト、あなたのノートに感謝します。私はちょうど質問を更新しました。 – Augusto

答えて

1

検証ロジックをモデルに属します。ここではどうすればいいのですか。

class User 
    belongs_to :team 
    attr_accessor :team_code 
    def team_code 
    @team_code ? @team_code : (team ? team.team_code : nil) 
    end 
    def team_code= (value) 
    @team_code = value 
    self.team = Team.where('team_code = ?', value).first 
    end 
    validates_presence_of :team 
    validates_each :team_code do |record, attr, value| 
    record.errors.add attr, 'does not exist' if !value.blank? && !team 
    end 
end 
+0

ありがとう、ジェレミー、あなたのソリューションは賢明かつシンプルです! – Augusto

関連する問題