Ruby on rails 具有关联的活动记录查询中的LIKE运算符
我有Ruby on rails 具有关联的活动记录查询中的LIKE运算符,ruby-on-rails,activerecord,ruby-on-rails-4,Ruby On Rails,Activerecord,Ruby On Rails 4,我有产品型号和订单型号。假设一个订单只有一个产品 我想搜索所有产品名称中有“水果”一词的订单 下面的查询允许我检索关联产品名称等于“fruity”的所有订单 但是我想做的是像操作符一样使用。如何使用查询界面进行此操作?用户可以非常清楚地进行布局 您需要一个参数化的字符串参数来其中: Order.joins(:product).where('products.name like ?', '%fruity%') 通过将哈希传递给ActiveRecord,您无法完成比基于等式和以及的分组更复杂的事情
产品
型号和订单
型号。假设一个订单只有一个产品
我想搜索所有产品名称中有“水果”一词的订单
下面的查询允许我检索关联产品名称等于“fruity”的所有订单
但是我想做的是像操作符一样使用。如何使用查询界面进行此操作?用户可以非常清楚地进行布局
您需要一个参数化的字符串参数来其中
:
Order.joins(:product).where('products.name like ?', '%fruity%')
通过将哈希传递给ActiveRecord,您无法完成比基于等式和以及的分组更复杂的事情;如果您想要求反,或像
,或
或
,则需要编写SQL的参数化片段:
...where('name = ? or name = ?', 'joe', 'bob') # only way to get 'or'
...where('name != ?', 'john') # only way to get 'not equal'
从Rails 4开始,他们已经通过解决否定问题。非常清楚地阐述了这一点
您需要一个参数化的字符串参数来其中
:
Order.joins(:product).where('products.name like ?', '%fruity%')
通过将哈希传递给ActiveRecord,您无法完成比基于等式和以及的分组更复杂的事情;如果您想要求反,或像
,或
或,则需要编写SQL的参数化片段:
...where('name = ? or name = ?', 'joe', 'bob') # only way to get 'or'
...where('name != ?', 'john') # only way to get 'not equal'
从Rails 4开始,他们已经通过解决了否定问题。使用
squel
gem可以不用编写原始SQL来实现。使用squel
gem可以不用编写原始SQL来实现。使用模型在Rails 4中实现否定。where.not
语法。很有趣,我不知道。你可以在Rails 4中用模型进行否定。where.not
语法。有趣的是,我不知道。