0

データベースに偽のデータをシードしようとしていますが、計画どおりに機能していません。アプリがプレイリストを作成します。正しくモデル化されていると思いますが、データベースをシードしようとすると、次のエラーが発生します。

rake aborted!
uninitialized constant Playlist::PlaylistSong

トレースを実行すると、以下のコードが気に入らないことがわかりました (具体的には、最後から 2 行目)。

my_playlist = Playlist.create!(:name => "my_playlist")
10.times do |n|
  my_playlist.songs.create!(:name => "song #{n+1}")
end

私のモデルは、プレイリストに「playlist_songs」というテーブルを介して多くの曲があり、曲には同じテーブルを介して多くのプレイリストがあるように設定されています。

これが私のモデルです。

class Playlist < ActiveRecord::Base
  attr_accessible :name

  has_many :playlist_songs
  has_many :songs, :through => :playlist_songs
 end

class Song < ActiveRecord::Base
  attr_accessible :name

  has_many :playlist_songs
  has_many :playlists, :through => :playlist_songs
end

class PlaylistSongs < ActiveRecord::Base
  belongs_to :song
  belongs_to :playlist
end

私の理論では、コード「my_playlist.songs」は実際にはコレクションであり、それが create メソッドが失敗する理由です。確信はないけど。私は正しいですか?もしそうなら、私が使用すべき構文は何ですか?

ベン

4

1 に答える 1

3

モデル名が間違っています。PlaylistSongsする必要がありますPlaylistSong

于 2012-06-03T23:57:34.450 に答える