2011-12-19 17 views
0

私はユーザーテーブルと組織テーブルを持っています。ユーザーにサインアップすると、アプリケーションによって新しい組織が作成されます。私はuser.rbにこのコードを置くことによってこれをしなかった:パラメータのIf-Elseステートメント?

class User < ActiveRecord::Base 
    before_create :create_organization 
    belongs_to :organization 

    private 
    def create_organization 
    self.organization = Organization.create :name => self.name 
    end 
end 

しかし、そのような、私はいくつかの並べ替えを作成するにはどうすればよい

http://localhost:3000/sign_up?organization_id=10 

などのパラメータがURL経由で渡されますいくつかのケースがあるでしょうorganization_idパラメータが存在する場合、ユーザモデルは新しい組織を作成しません。代わりに、既存のorganization_idパラメータをユーザのorganization_idとして送信しますか?お使いのモデルに

答えて

4

シンプル追加チェック、

def create_organization 
    organization = Organization.create :name => name unless organization_id.present? 
    end 

そして、あなたのコントローラで簡単にparamsからorganization_idを設定します。 findとして

+0

ユーザコントローラの 'def create'部分にunless引数と' @user.organization_id = params [:organization_id] 'を入れました。私はもはやエラーは表示されませんが、新しいユーザーがサインアップすると、新しい組織が作成されます。 – cdotfeli

+1

@cdotfeliは推測していますが、organization_idが 'create'アクションに渡されていることは確かですか? 'http:// localhost:3000/sign_up?organization_id = 10'に移動したときに、フォームを送信したときに存在する可能性があります。 –

+0

@ mark-guk NVM入手しました。私はuser_controllerの 'def new'部分に' @user.organization_id = params [:organization_id] 'を入れ、ユーザサインアップビューに' f.hidden_​​field:organization_id'を入れなければなりません( ' :organization_id]、else'コード)。助けてくれてありがとう! – cdotfeli

0
self.organization = Organization.find(organization_id) rescue Organization.create :name => name 

params[:organization_id]が設定されていない場合でも、ActiveRecord::RecordNotFoundが発生します。

+0

Hmmm、このコードを置くだけで私のためのエラーの全体の束を引き起こした..?コントローラーに何か他のものを置く必要がありますか? – cdotfeli

関連する問題