Как получить несвязанные элементы в ассоциации HABTM через активную запись - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть photos и categories таблицы и следующие модели:


class Category < ActiveRecord::Base
    has_and_belongs_to_many :photos
end

class Photo < ActiveRecord::Base
    has_and_belongs_to_many :categories
end

Теперь, как должен быть синтаксис для фотографий, которыееще не принадлежат к категории?

В SQL я бы сделал:

SELECT * FROM photos WHERE id NOT IN (SELECT photo_id FROM categories_photos);

Как бы это можно было сделать, используя ActiveRecord HABTM в Rails 2.3.10 приложении

1 Ответ

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

Я не проверял это.Но я думаю, это будет выглядеть (как named_scoped) в вашей модели Photo.

named_scope :with_no_category, :conditions => ["photos.id NOT IN (SELECT photo_id FROM categories_photos);"]

Тогда вы можете позвонить Photo.with_no_category

Надеюсь, это поможет.

...