我的产品模型包含一些项目

 Product.first
 => #<Product id: 10, name: "Blue jeans" >

我现在正在从另一个数据集中导入一些产品参数,但名称的拼写不一致.例如,在另一个数据集中,Blue jeans可以拼写为Blue Jeans.

我想要Product.find_or_create_by_name("Blue Jeans"),但这将创造一个新产品,几乎与第一个相同.如果我想找到并比较小写名称,我有什么 Select .

性能问题在这里并不重要:只有100-200种产品,我想将其作为导入数据的迁移运行.

有什么 idea 吗?

推荐答案

你可能得在这里说得更详细些

name = "Blue Jeans"
model = Product.where('lower(name) = ?', name.downcase).first 
model ||= Product.create(:name => name)

Ruby-on-rails相关问答推荐

Rails7--如何使用内联代码仅为操作运行BEFORE操作

刺激中的Rails 7和 bootstrap 错误-无法解析模块说明符 bootstrap

Grape api (rails) - 未初始化常量 Endpoints::TodoAPI (NameError)

ArgumentError 用于 Ruby on Rails 中非常简单的初始化方法,没有参数

如何避免 activesupport 中的循环参数引用警告

比较 Rails 中的日期

Rails Active Record - 从关系中获取 ids 数组

Rails 发现获取 ActiveRecord::RecordNotFound

SQLite3::BusyException

fields_for 表单构建器对象为零

在 Ruby on Rails 中获取空临时目录的最佳方法是什么?

Rails 4网站图标问题

Rails 4 查找没有子元素的父母

如何在不删除项目本身的情况下删除单个 HABTM 关联项目?

Rails:如何在表单的必填字段上禁用星号?

Rails 3.1 Sprockets 需要指令 - 有没有办法排除特定文件?

您推荐哪些工具来分析 Rails 应用程序?

错误:无法构建 gem 原生扩展 - 安装 mysql2 时出错

redirect_to 和 render 是可交换的吗?

您将如何解析 Ruby 中的 url 以获取主域?