2012-01-05 4 views
1

を動作しません:ポリモーフィック関連は、私はこれらのモデルクラスを持っている

class Song < ActiveRecord::Base 
    has_many :urls, as: :media 
    has_one :url, as: :media 
end 

class Url < ActiveRecord::Base 
    belongs_to :media, polymorphic: true 
end 

ここで奇妙なことが常にnilを返しますが、Song.first.urlsは、URLのリストを返すSong.first.urlということです。ここで

生成されたSQLクエリです:

Song.includes(:url).first.url # => nil 

Song Load (0.4ms) SELECT `songs`.* FROM `songs` LIMIT 1 
Url Load (0.4ms) SELECT `urls`.* FROM `urls` WHERE `urls`.`media_type` = 'Song' AND `urls`.`media_id` IN (1) 

Song.includes(:urls).first.urls # => [list of urls] 

Song Load (0.7ms) SELECT `songs`.* FROM `songs` LIMIT 1 
Url Load (0.5ms) SELECT `urls`.* FROM `urls` WHERE `urls`.`media_type` = 'Song' AND `urls`.`media_id` IN (1) 

なぜこれが起こっている私はすべてのアイデアのRuby 1.9.2に3.2.0.rc2

レールを実行していますか?

+0

これは興味深い:-) –

+0

はい、確かに。私はそれがバグかどうか疑問に思います... – Oleander

+0

'has_many'をモデルから削除するとどうなりますか?あなたが 'Song.includes(:url、:urls).first.url'をすればどうなりますか? –

答えて

0

これは私のせいで、私は誤って私自身のSong#urlメソッドを実装していました。それを見つけるのに私はしばらくかかった。

関連する問題