Полиморфные ассоциации с has_one не работают - PullRequest
1 голос
/ 05 января 2012

У меня есть следующие классы моделей:

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

Странная вещь в том, что Song.first.url всегда возвращает ноль, но Song.first.urls возвращает список 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)

Я использую rails 3.2.0.rc2 на Ruby 1.9.2

Есть идеи, почему это происходит?

1 Ответ

0 голосов
/ 06 февраля 2012

Это была моя ошибка, я случайно применил свой собственный метод Song#url.Мне понадобилось время, чтобы найти его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...