首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails作用域和连接

rails作用域和连接
EN

Stack Overflow用户
提问于 2012-07-24 09:41:08
回答 1查看 23.5K关注 0票数 7

我已经尝试了所有我认为对此有效的方法,但一无所获。

在Rails3中,我需要找到车里有cd播放器的所有用户。一辆车有一个用户和一个收音机,一个用户属于一辆车,一个收音机有很多辆车。

我不知道如何通过用户模型中的作用域来执行这个搜索。

代码语言:javascript
复制
class User  
  belongs_to :car

class Car  
  belongs_to radio
  has_one :user, :dependent => destroy

class Radio  
  has_many :cars
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-24 10:04:29

我假设你的意思是: Car有radio_id,user有car_id,因为一台收音机有多辆车,而car只有一个用户。带有外键的表始终位于关系的belongs_to端。

在不真正了解您正在寻找的结构的情况下,下面这样的代码应该可以工作:

代码语言:javascript
复制
scope :with_cd_player, joins(:cars).where('cars.radio_id is not null')

如果收音机上有一个类别栏,下面的方法就会起作用。

代码语言:javascript
复制
scope :with_cd_player, joins(:car => :radio).where('cars.radio_id is not null').where("radios.category = 'cd_player'")

对于Rails版本>= 4:

代码语言:javascript
复制
scope :with_cd_player, -> { joins(:cars).where.not(cars: { radio_id: nil }) }
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11622959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档