【发布时间】:2016-04-15 13:06:31
【问题描述】:
我有一个名为Facility 的模型。它has_many :addresses。 Address 型号 has_one :city。
现在我想运行一个条件:
- 获取所有没有关联地址的设施;
- 如果他们有地址,请检查他们是否没有与该地址关联的城市模型。
我已经尝试了第一个条件,但我无法为它组合 OR。
这将获取所有没有关联地址模型的设施
Facility.includes(:addresses).where( :addresses => {:facility_id => nil})
一些错误尝试是:
Facility.includes(:addresses).where( :addresses => ({:facility_id => nil}).or({:city_id => nil}) );
Facility.includes(:addresses).where( :addresses => ({:facility_id => nil}).or(:address => {:city_id => nil}) )
【问题讨论】:
-
你试过
.or({:addresses => {:city_id => nil}}) );吗? -
是的,我做了,不起作用我做了一个编辑,检查是否是你所说的,错误是 NoMethodError: undefined method `or' for {:facility_id=>nil} :哈希
-
@coderVishal,你可能对使用 Squeel 感兴趣。对于 OR 条件和其他匹配器,例如 ,Squeel 使代码干净,而不是使用对错误敏感的 SQL 字符串。
标签: ruby-on-rails ruby-on-rails-4 activerecord rails-activerecord ruby-on-rails-4.2