按正则表达式模式活动记录搜索



有没有办法通过ActiveRecord中的正则表达式模式进行搜索?我有一系列产品。我想根据满足多种模式的 sku 列搜索这些产品。

具有来自 [A-Z] 的单个字母的 SKU 应被视为premium products具有单个字母 [A-Z] 和数字 [0-9] 的 SKU 应被视为standard products具有双字母和数字 [0-9] 的 SKU 应被视为flash products

这是我需要的伪代码:

product.sku ~= /[A-Z]$/  => Premium Products
product.sku ~= /[A-Z][0-9]$/ => Standard Products
product.sku ~= /[A-Z]{2}[0-9]$/ => Flash products

我不想使用 ruby 的select过滤。这可以通过活动记录吗?

如果您使用支持正则表达式匹配的数据库,这是可能的。例如:邮政。我已经使用Postgres作为数据库在ActiveRecord上进行了一些正则表达式搜索。你可以阅读这篇文章

因此,在您的情况下,您可以简单地执行以下操作:

premium_products = Product.where("sku ~ ?", '[A-Z]$')
standard_products = Product.where("sku ~ ?", '[A-Z][0-9]$')
flash_products = Product.where("sku ~ ?", '[A-Z]{2}[0-9]$')

相关内容

  • 没有找到相关文章

最新更新