has_many / belongs_to关联的Active Record查询

时间:2015-02-26 05:56:02

标签: ruby-on-rails activerecord has-and-belongs-to-many

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

class Legislator < ActiveRecord::Base
  has_many :bills
end

class Bill < ActiveRecord::Base
  belongs_to :legislator
end

立法者所赞助的法案与该立法者有关。立法者还有一个“党”属性,即“R”,“D”或“我”

我希望得到一份由特定政党所有立法者赞助的法案清单,例如民主党赞助的所有法案。这个查询会是什么样的?

2 个答案:

答案 0 :(得分:2)

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")

答案 1 :(得分:1)

加入并将查询作为哈希

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