我正在尝试弄一个简单的情况:
我有一个名为Company的模型,在Company内部,我有公司,并且有以下对象:“ state_id”。我想找到包含某些ID的相关公司。
这是我可以获得state_id的唯一路径。所以,我在做:
Company.all.each do |comp|
comp.address.city.state_id
end
有效!但是当我这样做时:
Company.all.each do |comp|
comp.address.city.state_id = 27
#or comp.address.city.state_id(27)
end
它没有返回正确的数据
我知道这很简单,但不幸的是,我没有得到正确的输出。
非常感谢!
答案 0 :(得分:1)
尝试
Company.joins(address: :city).where(cities: {state_id: 27})
答案 1 :(得分:0)
您可以使其与select
方法一起使用。另外,请勿混淆==
和=
-前者检查相等性,而后者分配一个值:
needed_companies = Company.all.select do |comp|
comp.address.city.state_id == 27
end
但这不是正确的方法,因为您正在将所有公司加载到内存中并对其进行过滤。更好的方法是使用SQL查询(如Ursus的回答),并仅从数据库返回需要的公司