轨道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])
轨道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(...)
).