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

时间:2019-05-27 18:25:45

标签: ruby-on-rails ruby 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

它没有返回正确的数据

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

非常感谢!

2 个答案:

答案 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的回答),并仅从数据库返回需要的公司