我正在尝试做什么
在我的模型中,我想只选择不等于(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
的方法?
答案 0 :(得分:2)
我们会说items
是您使用#select
的项目数组。
arr = [a, b] # or [a, b, c, d]
items.reject { |item| arr.include?(item.attribute) }
这会将您的选择转换为拒绝,但拒绝等于(a或b)的项目。