假设我有两个模特:
竞选和资格认证。竞选has_one :qualification和资格认证belongs_to :campaign。
假设资格具有male_gender布尔属性,找到所有具有male_gender == true限定条件的活动的最有效方法是什么?
一种方法是循环使用male_gender索引的限定。创建一个campaign_ids数组,然后使用这些ids获取活动,但这似乎不太有效。
理想情况下,我想做一些像Campaign.where("qualification.male_gender: true")这样的事情
这有可能吗?有更好的方法吗?
发布于 2016-02-06 20:43:02
你当然能做到。使用联接,您可以引用where查询中的另一个表:
Campaign.joins(:qualification).where(qualifications: {male_gender: true})富Peck编辑
您也可以将其放入作用域中。
#app/models/campaign.rb
class Campaign < ActiveRecord::Base
scope :male_gender, -> { joins(:qualification).where(qualifications: {male_gender: true}) }
end..。这将允许您调用@campaigns = Campaign.male_gender
https://stackoverflow.com/questions/35246196
复制相似问题