2013-03-05 1 views
1

내 사이트에서 사용자를 만들면 User.new 인스턴스를 실행하고 싶지만 Alias.new 개체도 만들어야합니다. 사용자에게는 많은 별칭이 있습니다. 그러나 저장하기 전에 그 이름을 가진 다른 별칭이 없음을 확인해야합니다.레일 : 두 개의 객체가 동시에 저장되었는지 확인 하시겠습니까?

내 코드는 다음과 같을 수 콘솔에서

:

u = User.new(:name => "Bob") 
a = Alias.new(:name => "SirBob", :user_id => u) 

하지만 내가 저장할 때까지 u는 ID를 가지고 있지 않기 때문에 작동하지 않습니다이다. 그렇다면 두 항목을 저장하기 전에 이름의 고유성을 확인하려면 어떻게해야합니까?

답변

1

이 하나를 시도 : 나는 문제가 이것으로 무엇인지 모르는

+0

이렇게하면 모든 것을 한 번에 만들 수 있습니다. 하지만 별칭 요구 사항의 유효성을 검사하는 방법을 알 수는 없습니다 ... 실패 할 수있는 별칭을 만들 수 있습니다. – user985723

+0

이 작동하지만 내 사용자 모델이이 포함하도록 편집 할 : 'accepts_nested_attributes_for : 별칭 validates_associated : 별칭' – user985723

0

사용

ActiveRecord::Base.transaction do 
    u = User.new(:name => "Bob") 
    a = Alias.new(:name => "SirBob", :user_id => u) 
end 

및 별칭 모델에 validates_uniqueness_of :name을 추가

이가 문제를 해결하는 것입니다.

+0

이 도움이

u = User.new u.aliases.build 

희망 .... 다음과 같은 미친 오류가 발생합니다 : '예상되는 /var/www/ror/email/app/models/alias.rb 별칭을 정의합니다 .' – user985723

관련 문제