我已经尝试了我认为可以为此工作的一切,而且我什么都没有。
在rails 3中,我需要在他们的汽车中找到所有带cd播放器的用户。一辆汽车有一个用户和一个收音机,一个用户属于汽车,收音机有很多汽车。我对如何通过用户模型中的范围执行此搜索感到磕磕绊绊。
class User
belongs_to :car
class Car
belongs_to radio
has_one :user, :dependent => destroy
class Radio
has_many :cars
答案 0 :(得分:13)
我假设你的意思是:
汽车有radio_id
,用户有car_id
,
因为收音机有很多车,而车有一个用户。具有外键的表始终位于关系的belongs_to末尾。
如果不了解您正在寻找的结构,以下内容应该有效:
scope :with_cd_player, joins(:cars).where('cars.radio_id is not null')
如果收音机上有类别栏,则以下内容可行。
scope :with_cd_player, joins(:car => :radio).where('cars.radio_id is not null').where("radios.category = 'cd_player'")