轨道3.2.1

有没有办法(不带squeel)使用ActiveRecord的哈希语法来构造!=运算符?

大约Product.where(id: !params[:id])

产生SELECT products.* FROM products WHERE id != 5

寻找Product.where(id: params[:id])的反面

UPDATE

rails 4中有一个not操作员.

Product.where.not(id: params[:id])

推荐答案

没有任何内置的方法可以做到这一点(从Rails 3.2.13开始).但是,您可以轻松构建一种方法来帮助您:

ActiveRecord::Base.class_eval do
  def self.where_not(opts)
    params = []        
    sql = opts.map{|k, v| params << v; "#{quoted_table_name}.#{quote_column_name k} != ?"}.join(' AND ')
    where(sql, *params)
  end
end

然后你可以做:

Product.where_not(id: params[:id])

UPDATE

正如@DanMclain所回答的,Rails 4已经为您完成了这项工作(使用where.not(...)).

Ruby-on-rails相关问答推荐

RubyOnRail在测试环境中启动失败

是否从已转换为字符串的数组中提取符号?

如何通过graphqlMutations 从rails销毁当前用户会话

复制我的活动时,活动描述没有复制过来

Rails 7 应用程序 - 引用模型文件时出现未初始化常量错误

使用 Ruby On Rails 的多个用户模型,并设计有单独的注册路由,但只有一个共同的登录路由

rails select标签,预先 Select 了多个值

带有 Cucumber 和 rspec 的 BDD - 这什么时候是多余的?

没有要加载的文件 - readline

Ruby如何写入Tempfile

Rails:仅当值存在时如何验证格式?

如何在 Rails 1.2.3 中使复选框默认为选中?

如何将变量 link_to 定义为外部 URL

在 RoR 中引用同一个表的多个外键

使用 rvm 更新 ruby​​ 版本后收到警告消息Path set to RVM

用户注册时设计确认令牌无效

submit_tag rails 表单中的 bootstrap 图标

Heroku - 在浏览器中显示当前提交的哈希

停止 Rails 为视图和助手生成规范测试?

ActionMailer 在开发 Rails 4 中不发送邮件