Ruby 如果这两个值不存在,则进行比较

Ruby 如果这两个值不存在,则进行比较,ruby,ruby-on-rails-3,comparison,enumeration,Ruby,Ruby On Rails 3,Comparison,Enumeration,我想做什么 在我的模型中,我只想选择不等于a或b的项。所以我做了这件事 这很有效 选择{| item | item.attribute!=a}。选择{| item | item.attribute!=b} 问题: 这个链接是有效的,但是有没有其他的方法来写呢? 如果我想同时检查c和d会发生什么?我可以在某处添加一些数组吗? 我不会一直用链子拴着的,是吗 跟进问题 选择行将在我的模型中工作,但是当我尝试在我的模型中放置拒绝行时,我得到了一个未定义的拒绝方法 类模型

我想做什么 在我的模型中,我只想选择不等于a或b的项。所以我做了这件事

这很有效 选择{| item | item.attribute!=a}。选择{| item | item.attribute!=b}

问题: 这个链接是有效的,但是有没有其他的方法来写呢? 如果我想同时检查c和d会发生什么?我可以在某处添加一些数组吗? 我不会一直用链子拴着的,是吗

跟进问题 选择行将在我的模型中工作,但是当我尝试在我的模型中放置拒绝行时,我得到了一个未定义的拒绝方法

类模型 def self.foo arr=[a,b] 拒绝{| item | arr.include?item.attribute} 结束

结束

我猜ActiveRecord不明白拒绝?ActiveRecord是否有一个类似于SQL NOT-LIKE的方法?

我们将说items是您正在使用select的项目数组


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

这有效!我唯一的问题是,由于某种原因,我无法让它在我的模型中工作。模型中的完整代码是什么?注意,这不会更改项目,您必须执行以下操作之一:新建项目=项目。拒绝。。。或执行项目。拒绝!。拒绝修改原始数组。我的模型是ActiveRecord模型。请先写入all.reject将其转换为数组。不过,您可能会重新考虑编写代码,具体取决于数据库中的模型数量。这最好是SQL查询。将其转换为数组不正确。我想你是对的,我可能需要为此创建一些SQL查询。我会做一些研究。我对ActiveRecord不太熟悉,所以希望有人能在这方面给你更多的帮助。你必须在一些ActiveRecord对象数组上调用reject。你打算拒绝什么?例如,在phoffers代码中,HEI拒绝从项目中删除。你必须在某个地方定义它并调用拒绝。
arr = [a, b] # or [a, b, c, d]
items.reject { |item| arr.include?(item.attribute) }