Как я могу найти ассоциации, которые не существуют с Rails? - PullRequest
0 голосов
/ 26 ноября 2011

Я хочу представить это в Rails / ActiveRecord, используя ассоциации:

SELECT
  locations.* 
FROM
  locations
  LEFT JOIN items_locations ON locations.id = items_locations.location_id
  AND items_locations.item_id = 166
WHERE
  items_locations.item_id IS NULL

В настоящее время у меня есть

class Item < ActiveRecord::Base
  has_and_belongs_to_many :locations
end

Это вытягивает все местоположения, связанные с предметом, через простую таблицу сопоставления items_locations. Моя цель состоит в том, чтобы изменить это, чтобы получить все записи местоположения, НЕ связанные с элементом.

Как должна выглядеть ассоциация в моей модели для достижения этой цели?

1 Ответ

0 голосов
/ 26 ноября 2011

Звучит так, будто вам нужны все местоположения, чей item_id не равен 166. Вы не указали, какую версию Rails вы используете, но в Rails 3 запрос будет выглядеть так, если item_id является переменной:

Location.where("item_id != ?", my_item_id)

Это получит все местоположения, чей item_id не равен my_item_id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...