ruby-on-rails - # 方法缺失或方法未定义“upsert”
问题描述
我正在从需要不时更新的 TXT 文件中播种数据库,并想尝试新的 upsert 功能。
然而,在凌晨 4 点我几乎无法阅读屏幕并认为我正在做一些明显或愚蠢的事情,森林换树木的东西?
我已经重新阅读了文档并更新了 rails 版本,但是当我在对象上调用 upsert 时出现错误
NoMethodError: undefined method `upsert' for #<Trademark:0x000055a4c3234bd8>
/home/ubuntu/.rvm/gems/ruby-2.7.0/gems/activemodel-6.1.2/lib/active_model/attribute_methods.rb:469:in `method_missing'
我已将 RAILS 更新到 6.1.2。Ruby 为 2.7.0,数据库为 PG 1.2.3
列 :mark_number 在其上的数据库中具有唯一索引。
这是我的种子代码,我正在关注文档。
l 对象是上传的txt文件,我逐行遍历并拆分为一个数组。
t = mark.new
t.mark_hyperlink = l[1].split('"')[1].strip
t.mark_number=l[0].strip
puts t.mark_number
# Create bitstring of 45 classes
bitstring=""
(12..56).each do |i|
bitstring=bitstring + l[i]
end
puts bitstring
t.class_bitstring=bitstring
# also tried inserting like this, comes back with fail
#upsert(t, returning: nil, unique_by: :mark_number)
t.upsert
任何指针表示赞赏
解决方案
这是一个类方法,而不是实例方法。应该是这样的:
Trademark.upsert(attributes)
推荐阅读
- python - 将参数传递给python中的深层嵌套函数
- php - 路由中的可选参数取决于参数位置
- apache-spark - 将 Spark 数据帧合并到现有的 ACID 事务 Hive 表中?
- firebase - Firestore 通配符变量不起作用
- node.js - 吉普错误!构建错误:npm 安装模块上的 node-gyp 构建配置错误
- php - 如何使用 access_token 直到它过期,然后获取并使用一个新的 refresh_token?
- python - 带分隔符的拆分列
- python - 如何在熊猫矢量化中计算日期索引和未来一个月的日期之间的行以将它们添加为列?
- python - 如何在 MSYS2 上安装 python-dev?
- sbt - Coursier vs Ivy,校验和和 SSL 异常