rails habtm с моделью соединения - как найти несвязанные записи? - PullRequest
0 голосов
/ 03 января 2012

У меня есть отношение habtm, реализованное с моделью, которая представляет соединение (потому что соединение имеет атрибуты):

class Person
  has_many :person_photos
end

class PersonPhoto
  # has a person and a photo id, and a couple of 
  # other attributes that aren't relevant
end

class Photo
  has_many :person_photos
end

Я бы хотел добавить метод в класс Photo, чтобы получить список людей, которые не на этой фотографии. Для жизни я не могу понять это. Это легко сделать?

Ответы [ 2 ]

1 голос
/ 03 января 2012

Попробуйте, может быть, в вашей фотомодели ...

def people_not_tagged
    People.where("id NOT IN (?)", people_ids.empty? ? "" : people_ids)
end
0 голосов
/ 03 января 2012

Вы можете попытаться сделать так, чтобы у человека были фотографии человека с помощью person_photos, а у фотографии есть фото человека с помощью person_photos.

Rails документы для has_many до

Тогда photo.find (1) .people перечислил бы всех людей на фото 1

Затем с помощью вычитания массива people_not_in_photo = People.all - photo.find (1). Я думаю, что люди дадут вам то, что вы ищете.

Вопрос Stackoverflow по вычитанию массивов

...