У меня довольно сложный поиск, который я пытаюсь сделать в Rails, и я не совсем уверен, как кто-то может помочь.
У меня есть две модели, Пользователь и Место.
Пользователь связан с местом дважды.Один раз для посещенных мест и один раз для запланированных мест.Это отношение многих ко многим, но с использованием has_many: through.Вот отношения от пользователя.
has_many :visited_places
has_many :visited, :class_name=>"Place", :through=>:visited_places, :source=>:place
has_many :planned_places
has_many :planned, :class_name=>"Place", :through=>:planned_places, :source=>:place
На месте отношения также определены.Вот определение там
has_many :visited_users, :class_name=>"User", :through=>:visited_places
has_many :planned_users, :class_name=>"User", :through=>:planned_places
Я пытаюсь написать находку на Месте, которая возвращает все места в базе данных, которые не связаны с Пользователем через посещенных или запланированных.Прямо сейчас я выполняю это, просто запрашивая все места и затем вычитая посещенные и запланированные из результатов, но я хочу добавить в нумерацию страниц, и я боюсь, что это может усложнить это.Вот мой текущий код.
all_places = Place.find(:all)
all_places = all_places - user.visited - user.planned
Кто-нибудь знает, как мне это сделать, просто позвонив на Place.find.Также это приложение на Rails 3, так что если какие-либо улучшения активных записей делают это проще, они являются опцией.