2013-10-10 6 views
0

has_one과 다형성 연관이 있으며 연관성을 통해 만들려고 할 때 오류가 발생합니다.has_one과의 다형성 연관성, 연관성을 통해 생성 할 수 없음

class User < ActiveRecord::Base 
    belongs_to :userable, polymorphic: true 
end 

class Student < ActiveRecord::Base 
    attr_accessible :gender, :description, :dob 
    has_one :user, :as => :userable 
end 

내가하려고하면 :

s = Student.new 
s.user.create 

내가 얻을 오류 정의되지 않은 방법은 '전무'

을하지만 위해 만들! 내가 has_many 사용자와의 연관성을 바꾼다면 위의 같은 줄을 preform 할 수 있습니다.

왜 이런 일이 일어 났는지 설명 할 수 있습니까? 감사!

답변

1

값을 할당하지 않았으므로 사용자가 0이 아닙니다. 당신은 같은 것을 사용해야합니다

s.build_user(...) 

또는

s.create_user(...) 
+0

딱! 내가 이해하지 못하는 것은 내가 has_many를 사용할 때 사용자 배열 또한 무효이지만 여전히 만들 수 있다는 것이다. –

+1

@UriKlar Great! has_many를 사용할 때 연관은 빈 배열로 초기화되므로 nil이 아니기 때문에 연관성에 대한 메서드를 호출 할 수 있습니다. 'has_one'을 사용하면 연관을 자동으로 초기화 할 수 없으므로 helper 메소드 (build_xxx, create_xxx) 중 하나를 호출하거나 명시 적으로 x.foo = Foo.new와 같이 할당해야합니다 –