2011-12-19 79 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 

但會有一些情況下,參數將通過URL來傳遞,如

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

如何建立某種形式的的if-then語句,這樣如果organization_id參數存在,用戶模型不會創建一個新的組織。但是反而提交現有的organization_id參數作爲用戶的organization_id?

回答

4

簡單的附加檢查到模型中,

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

而在你的控制器簡單地從params設置organization_id

+0

我在用戶控制器的def create部分放置了unless參數和'@user.organization_id = params [:organization_id]'。我不再出現錯誤,但當新用戶註冊時,它仍然創建一個新組織。 – cdotfeli 2011-12-19 10:48:31

+1

@cdotfeli只是猜測,但你確定organization_id被傳遞到你的'create'動作?當您導航到「http:// localhost:3000/sign_up?organization_id = 10」時,它可能存在,但是當您提交表單時... – 2011-12-19 11:03:24

+0

@ mark-guk NVM我知道了。我必須在user_controller的'def new'部分放入​​'@user.organization_id = params [:organization_id]',並在用戶註冊視圖中放置一個'f.hidden_​​field:organization_id'(包裹在'if params [ :organization_id],否則'代碼)。謝謝您的幫助! – cdotfeli 2011-12-19 11:03:59

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

find將提高ActiveRecord::RecordNotFound即使params[:organization_id]未設置。

+0

嗯,把這段代碼引發了一大堆錯誤給我..?我需要將其他東西放在控制器中嗎? – cdotfeli 2011-12-19 10:52:23