0

我有这个范围,效果很好:

scope :concurrent, lambda{ |a,r,e| where(application_id: a, role_id: r, environment_id: e) }

它是这样使用的:

l = Deployment.last
concurrent_deployments = Deployment.concurrent(l.application_id, l.role_id, l.environment_id)

我需要对其进行修改,使其不会捕获所有并发并发的 Deployment。所以我可以添加一个参数i,它是目标的 id。

我重写:

scope :concurrent, lambda{ |a,r,e,i| where(application_id: a, role_id: r, environment_id: e, id: !i) }

这行不通。

我该怎么做呢?

4

1 回答 1

0

你能有两个范围吗?

scope :concurrent, lambda{ |a,r,e| where(application_id: a, role_id: r, environment_id: e) }
scope :concurrentx, lambda{ |a,r,e,i| where('application_id = ? AND role_id = ? AND environment_id = ? AND id <> ?',a,r,e,i) }
于 2013-02-28T22:26:11.803 回答