【发布时间】:2013-01-19 18:42:39
【问题描述】:
我在 Rails 中有以下范围。
scope :with_active_services, Contact.joins(:i_services, :c_services).merge(IService.enabled).merge(CService.enabled)
我想要实现的是选择一个启用了 i_services 或 c_services 的联系人。联系人不必两者兼有。
我遇到了一些我无法解决的问题。
目前范围的方式意味着联系人需要同时启用 i_service 和 c_service 才能返回。
当我使用生成的 SQL 并将 WHERE 条件中的 AND 更改为 OR 时,我遇到了联系人仍然需要返回 c_service 和 i_service 的问题。
如何修改它以满足我的要求?
谢谢。
【问题讨论】:
-
不幸的是,Rails 不支持任何查询方法的“OR”谓词。不过,您也许可以为此使用 ARel,例如查看 this answer。不确定是否可以使用现有的范围。
标签: sql ruby-on-rails scope associations rails-activerecord