我定义了以下模型:
class Group < ActiveRecord::Base
end
class Person < ActiveRecord::Base
end
class Policeman < Person
end
class Firefighter < Person
end
在Group
内,我想让所有拥有Policemen
的群组,例如:
class Group < ActiveRecord::Base
has_many :policemen
scope :with_policemen, -> { joins(:policemen).uniq }
end
这可以按预期工作。现在,如果我想抓住Policeman
status: 3
class Group < ActiveRecord::Base
has_many :policemen
scope :with_policemen, -> { joins(:policemen).where(policemen: { status: 3 }).uniq }
end
的所有群组,我会这样做:
policemen
但不幸的是,这不起作用,因为ActiveRecord使用where(people: { status: 3 })
表构造查询,这显然不存在。解决方案是在范围内使用{{1}},但我想知道为什么ActiveRecord不能在WHERE子句中放置正确的表,因为它具有必要的关联集。
答案 0 :(得分:2)
根据the docs,哈希语法的预期格式为<div class="container-fluid" style="text-align:center; background-color: #f6f6ff;">
<div class="col-md-offset-1 col-sm-12 col-md-10" style="background-color: #f6f6ff;">
<img src="media/subversion_logo-384x332.png" alt="Subversion" height="150" width="150">
<h1>2</h1>
<img src="media/github.png" alt="GitHub" height="150" width="150">
</div>
</div>
。
table_name: { column_name: val }
我同意你的观点 - 如果where和join语法类似,那就更有意义了。另一个不一致 - scope :with_policemen, -> { joins(:policemen).where(people: { status: 3 }).uniq }
方法不采用哈希,只采用字符串或数组。