如何通过 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
的公司
我试图得到简单的情况:
我有一个名为 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
的公司