Rails如何在哪里访问子模型属性

时间:2016-02-06 20:39:07

标签: ruby-on-rails

我们说我有两种模式:

广告系列和资格认证。广告系列has_one :qualification和资格belongs_to :campaign

我们假设资格认证具有male_gender布尔属性,这是查找具有male_gender == {{1}资格的所有广告系列的最有效方式}

一种方法是通过索引true循环验证。创建一系列campaign_ids,然后获取包含这些ID的广告系列,但这似乎不太有效。

理想情况下,我想做male_gender

之类的事情

这可能吗?有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

你当然可以做到这一点。使用连接,您可以在where查询中引用另一个表:

Campaign.joins(:qualification).where(qualifications: {male_gender: true})

Rich Peck编辑

您也可以将其放入scope

#app/models/campaign.rb
class Campaign < ActiveRecord::Base
   scope :male_gender, -> { joins(:qualification).where(qualifications: {male_gender: true}) }
end

...这将允许您拨打@campaigns = Campaign.male_gender