has_many/belongs_to 关联的 Active Record 查询

Active Record query for has_many/belongs_to associations

我构建了一个 Rails 应用程序,其中包含有关美国国会的数据。我有一个立法者模型和一个法案模型:

class Legislator < ActiveRecord::Base
  has_many :bills
end

class Bill < ActiveRecord::Base
  belongs_to :legislator
end

因此立法者发起的法案与该立法者相关。立法者还有一个 "party" 属性,可以是 "R"、"D" 或 "I"

我想获取由特定政党的所有立法者发起的所有法案的列表,例如,由民主党发起的所有法案。这个查询会是什么样子?

加入并将查询作为散列

Bill.joins(:legislator).where(legislators: {party: 'D'})
Bill.joins(:legislator).where(legislators: {party: "I"})

但我建议你写立法者和法案的范围

# class Legislator
scope :by_party, ->(party) do
  where(party: party)
end

# class Bill
scope :sponsored_by_party, ->(party) do
  joins(:legislator).merge(Legislator.by_party(party))
end

那你就可以写

Bill.sponsored_by_party("I")