Допустим, у меня есть следующая модель:
# video.rb
class Video < ActiveRecord::Base
has_many :collection_videos, :dependent => :destroy
has_many :collections, :through => :collection_videos
named_scope :in_collection_one,
:joins => :collection_videos,
:conditions => "collection_videos.collection_id = 1"
named_scope :in_foo_collections,
:joins => :collections,
:conditions => "collections.foo = true"
end
# collections.rb
class Collection < ActiveRecord::Base
has_many :videos, :through => :collection_videos
has_many :collection_videos, :dependent => :destroy
end
# collection_videos.rb
class CollectionVideos < ActiveRecord::Base
belongs_to :collection
belongs_to :video
end
Если я сделаю следующий звонок:
Video.in_collection_one.in_foo_collections
Я получу сообщение об ошибке после того, как ActiveRecord создаст SQL-запрос с жалобой на многократное объединение - он попытается присоединиться к: collection_videos дважды (неправильно, следует присоединиться только один раз) и: collection один раз (это правильно). Это, вероятно, вызвано ошибкой в рельсах, но мне интересно, есть ли способ обойти это.
Примечание: я использую Rails / ActiveRecord версии 2.3.2