2012-04-18 3 views
0

나는 세 가지 모델이 있습니다 User, Song, AlbumID를 설정하지 않는 모델 체인은 정상입니까?

Userhas_many :songs, :albums

Songbelongs_to :user, :album

Albumbelongs_to :user, has_many :songs

나는 다음과 같은 것을 할 때 :

그것은 잘 작동하고 올바르게 설정 외래 키 album_id로 새 Song을 만들 수 있지만 그것을 만든 User에 노래의 user_id을 설정하지 않을 것입니다. 이게 정상인가? Song을 새로 만들고 album_iduser_id을 모두 적용하려면 어떻게해야합니까?

나는 사용자가 Song을 만든 다음 Album을 추가하도록 선택할 수 있다고 생각하십니까?

답변

0

사용자와 체인이 없습니다. user_id가 해당 사용자로 설정된 앨범 객체를 인스턴스화했지만 ActiveRecord가 자동으로 해당 user_id를 해당 앨범의 생성 된 노래로 설정한다는 것을 의미하지는 않습니다. 이는 대부분의 응용 프로그램에서 예상치 못한 동작입니다. 이 리팩토링해야 같은 소리 어쨌든

album.songs.create(params.merge({:user => user})) 

: 귀하의 경우

은 당신이 만드는 방법과 같은

뭔가를 사용자에게 전달할 수 있습니다. 그 코드를 어디서 부르니, 노래는 행동을 만드나요? 요청에서 얻은 정확한 매개 변수는 무엇입니까? 왜 특성을 만들기 위해 params [: song]을 사용하지 않았습니까?

관련 문제