Rails has_many,只找到有孩子的人

Lee*_*lla 7 activerecord ruby-on-rails

我的"产品"表has_many:registered_products.

我想用类似的东西

products.find(:has_registered_products) 
Run Code Online (Sandbox Code Playgroud)

其中只返回在registered_products表中也有条目的产品.我怎么能实现这个目标?

mne*_*son 11

只要您在registered_products表中有产品的foreign_key,您就可以:

has_many :registered_products
named_scope :with_registered_products, :joins => :registered_products

# if you're using rails 3
scope :with_registered_products, joins(:registered_products)
Run Code Online (Sandbox Code Playgroud)

并且只返回至少有一个相关注册产品的产品.

  • 不要忘记将它选为不同的或者你最终会得到重复的是我的:`范围:at_least_one_image,select('DISTINCT recipes.*').join(:images)` (2认同)

Dwa*_*rde 5

这将处理重复。

Product.joins(:registered_products).uniq
Run Code Online (Sandbox Code Playgroud)