ActiveRecord ассоциация с ограничением - PullRequest
0 голосов
/ 10 сентября 2011

Водитель имеет много машин Автомобиль has_one Владелец

Я хотел бы вернуть Драйверы, у которых есть Автомобили с owner_id = 1 Вот подвох. Я хотел бы вернуть ВСЕ драйверы с загруженными автомобилями (с owner_id = 1). Если владелец автомобиля не owner_id = 1, мне нужно иметь Driver.cars = [] (или ноль)

Проблема заключается в том, что вы пытаетесь загрузить с ограничением на ассоциацию.

Когда вы используете Joins, The Car никогда не загружается в качестве активной записи.

Есть мысли? Эта проблема на самом деле сложнее, чем вы думаете.

Я пробовал, объединяет, все, во-первых, находит с условиями, включает в себя и т.д.

1 Ответ

0 голосов
/ 10 сентября 2011

Вот несколько предложений: Вы можете заключить «Driver has_many cars» в скобки кода и написать его как правильный класс Ruby / Rails, чтобы люди, читающие ваш вопрос, поняли jsut, посмотрев на него:

class Driver < ActiveRecord::Base
  has_many :cars
end

class Car < ActiveRecord::Base
  has_one :owner
end

Не говоря уже о том, что не помешает вставить класс Owner в ваш пост.Также Driver.cars предполагает, что «автомобили» - это метод класса, а не ассоциация AR, которая вводит в заблуждение.Также более естественным было бы определение метода вашего автомобиля следующим образом:

class Car < ActiveRecord::Base
  belongs_to :owner
end

Наконец, чтобы ответить на ваш вопрос.Все причуды нетерпеливой загрузки, с вашим случаем, я полагаю, также документированы здесь: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html под ярлыком «Готовая загрузка ассоциаций».

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