Rails 3 - выберите данные из 3 таблиц - PullRequest
0 голосов
/ 16 февраля 2012

У меня есть 3 модели:

class Car < ActiveRecord::Base
  belongs_to :user
  has_many :car_styles
  has_many :styles, :through => :car_styles
end


class CarStyle < ActiveRecord::Base
  belongs_to :car
  belongs_to :style
end


class UserStyle < ActiveRecord::Base
  belongs_to :style
  belongs_to :user  
end


class User < ActiveRecord::Base     
  has_many :cars

  has_many :car_styles
  has_many :styles, :through => :car_styles

end

Я вошел в систему пользователя ( current_user ).Я пытаюсь выбрать все машины, где car style_id совпадают с user style_id - как я могу это сделать?

Заранее спасибо за помощь

РЕДАКТИРОВАНИЕ: схема:

автомобили

-id
-user_id

car_styles

-car_id
-style_id

user_styles

-user_id
-style_id

Каждый пользователь сохранил любимые стили - не важно сколько (но примерно ± 5).Каждое фото также добавляет стили - и опять-таки, неважно, сколько.

И я хотел бы выбрать из таблицы все автомобили, которые имеют те же стили, что и добавленный current_user.

1 Ответ

1 голос
/ 16 февраля 2012

Я думаю, что вы говорите здесь, у вас есть три основные модели:

Автомобиль, Пользователь и Стиль

CarStyle и UserStyle - это соединения, верно?

Если это так, вы должны быть в состоянии сказать:

Car.joins(:styles => [:users]).where(:users => {:id => current_user.id })

Если нет, не могли бы вы обновить вопрос своей схемой?

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