J'ai une recherche assez compliquée que j'essaie de faire dans Rails et je ne suis pas tout à fait sûr de savoir comment quelqu'un peut vous aider.Comment trouver tous les articles non liés à un autre modèle - Rails 3
J'ai deux modèles, utilisateur et lieu.
Un utilisateur est lié à Place deux fois. Une fois pour visited_places et une fois pour planned_places. C'est une relation de plusieurs à plusieurs, mais en utilisant has_many: through. Voici la relation de l'utilisateur.
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
En place, la relation est également définie. Voici la définition il
has_many :visited_users, :class_name=>"User", :through=>:visited_places
has_many :planned_users, :class_name=>"User", :through=>:planned_places
Je suis en train d'écrire une découverte sur la place qui retourne tous les lieux dans la base de données qui ne sont pas liées à un utilisateur soit par visite ou prévu. En ce moment, j'accomplis cela en interrogeant simplement tous les lieux, puis en soustrayant visité et prévu à partir des résultats, mais je veux ajouter à la pagination et je suis inquiet que cela pourrait compliquer cela. Voici mon code actuel.
all_places = Place.find(:all)
all_places = all_places - user.visited - user.planned
Tout le monde sait comment je peux accomplir cela dans un simple appel à Place.find. Aussi, il s'agit d'une application Rails 3, donc si l'une des améliorations apportées à l'enregistrement actif rend cela plus facile, ils sont une option.
OT, mais vous pouvez renommer votre modèle joindre - Semble votre: visited_places joindre modèle devrait être renommé « PlaceVisits », et vous pouvez avoir 'has_many: place_visits' et 'has_many: visits_places,: through =>: place_visits' –