如何通过 rails 控制台上的模型获取通讯员 ID

How to get an correspondent id through a model on rails console

我试图得到简单的情况:

我有一个名为 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

return 数据不正确

我知道这很简单,但不幸的是,我没有得到正确的输出。

非常感谢!

尝试

Company.joins(address: :city).where(cities: {state_id: 27})

您可以使用 select 方法使其工作。另外,不要混淆 === - 前者检查相等性,后者分配一个值:

needed_companies = Company.all.select do |comp|
     comp.address.city.state_id == 27
end

但这不是正确的方法,因为您正在将所有公司加载到内存中并对其进行过滤。更好的方法是使用 SQL 查询(如 Ursus 的回答)并且 return 只需要来自 DB

的公司