Rails 3 - 从3个表中选择数据

时间:2012-02-16 15:21:53

标签: mysql ruby-on-rails-3 activerecord join include

我有这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

我已登录用户( current_user )。我正在尝试选择所有车辆,其中 car style_id 用户style_id 相同 - 我该怎么做?

提前感谢您的帮助

编辑:架构:

汽车

-id
-user_id

car_styles

-car_id
-style_id

user_styles

-user_id
-style_id

每个用户都保存了喜欢的样式 - 无论多少(但大约±5)。每张照片都添加了一个样式 - 再次无关紧要。

我想从当前用户添加的表格中选择所有具有相同样式的汽车。

1 个答案:

答案 0 :(得分:1)

我想你在这里说的是你有三个主要模型:

汽车,用户和风格

CarStyle和UserStyle加入了吗?

如果是这样,你应该可以说:

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

如果没有,你能用你的架构更新问题吗?