2011-12-19 7 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을 통해 전달 될 경우,이있을 것 of-then 문을 사용하여 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 

이 설정되지 않은 ActiveRecord::RecordNotFoundparams[:organization_id] 경우에 올릴 것이다.

+0

흠,이 코드를 넣는 것은 나를 위해 모든 오류를 방아쇠를 당겼다. ..? 컨트롤러에 다른 것을 넣어야합니까? – cdotfeli

관련 문제