2012-11-22 2 views
0

나는 3 개 테이블을했습니다 models/profile.rb에서레일 관계

has_one :profile, :dependent => :destroy 
has_one :payment_detail, :dependent => :destroy 

내가 가진 :

has_one :payment_detail, :through => :user 

그리고 models/payment_details.rb에 나는 가지고있다 :

has_one :profile, :through => :user 

그런 다음 중첩 된 양식이있는 :profile 양식이 있습니다. 어떤 이유 :payment_details를 들어

:user_id이 문서를 바탕으로 :profiles

+0

각 관계의 'belongs_to'부분이 누락 된 것 같습니다. 그저 복사 - 붙여 넣기 생략일까요? – Chowlett

+0

예,'payments_detail'과'profile' 모델 모두에'belongs_to : user'가 있습니다. –

+0

양식과 컨트롤러가 포함 된 뷰를 제공하십시오. – Jesper

답변

1

에서 대신 :user_id:profiles에서 :id으로 업데이트되는, accepts_nested_attributes_for의 동작은 :through 연관들에 대해 잘 정의 될 것 같지 않습니다. 이 관계는 일반적으로 직접 부모 - 자식으로 가정되므로 이와 같은 이상한 행동을 보게되는 것은 놀라운 일이 아닙니다.

User 모델을 통해 양식을 처리하거나 PaymentDetail 모델의 속성을 허용하거나 모델을 어떤 방식 으로든 결합해야합니다. has_one 연관을 사용하는 것이 유용하다는 것을 거의 알지 못합니다. 유지 관리 비용이 이익보다 중요한 경향이 있기 때문입니다.하지만 항상 유스 케이스에 따라 다릅니다. 열 수가 너무 많지 않은 경우 UserProfile과 결합하고 PaymentDetail을 사용하여 코드를 단순화 할 수 있습니다.

+0

다른 방법을 시도해 보겠습니다. 중첩 된 경로를 갖는 대신'PaymentDetail'을'Profile' 컨트롤러에 직접 저장합니다. 나는 당신의 대답으로 투표를 시도했지만 나는 충분한 평판이 없습니다, 미안 해요. –