如何通过活动记录获取HABTM关联上的非关联项

时间:2012-02-14 16:10:59

标签: ruby-on-rails activerecord has-and-belongs-to-many

我有photoscategories表以及以下模型:


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);

Rails 2.3.10应用程序中使用ActiveRecord HABTM执行此操作的方法是什么

1 个答案:

答案 0 :(得分:0)

我没有测试过这个。但我想你的照片模型看起来会像这样(作为一个named_scoped)。

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

然后你可以拨打Photo.with_no_category

希望它有所帮助。