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")
我构建了一个 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")