Ruby比较这两个值是否不存在

时间:2011-03-05 15:00:13

标签: ruby ruby-on-rails-3 comparison enumeration

我正在尝试做什么
在我的模型中,我想只选择不等于(a或b)的项目。所以我这样做了。

# This works
select { | item | item.attribute != a}.select {| item | item.attribute != b}

问题
这种链接有效,但还有另一种写法吗? 如果我还想检查c和d会怎么样?我会在某处添加一些数组吗? 我不会继续链接吗?

跟进问题
select行可以在我的模型中使用,但当我尝试将reject行放入我的模型中时,我得到undefined method reject for #<Class>

class Model < ActiveRecord::Base

def self.foo
    arr = [a,b]
    reject { | item | arr.include?(item.attribute)}
end

end

我猜想ActiveRecord不理解reject? ActiveRecord是否有一个类似于SQL NOT LIKE的方法?

1 个答案:

答案 0 :(得分:2)

我们会说items是您使用#select的项目数组。

arr = [a, b] # or [a, b, c, d]
items.reject { |item| arr.include?(item.attribute) }

这会将您的选择转换为拒绝,但拒绝等于(a或b)的项目。