2012-04-18 4 views
0

私は三つのモデルがあります:UserSongAlbumIDを設定していないモデルチェーニングは、これは正常ですか?

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]を使用していませんか?

関連する問題