#<mark:0x000055d9d09442d8> 缺少方法或方法未定义“upsert”

method missing or method undefined `upsert' for #<mark:0x000055d9d09442d8>

我正在从需要不时更新的 TXT 文件中播种数据库,并想尝试新的更新插入功能。

然而凌晨 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 object是我上传的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

感谢任何指点

这是一个class方法,不是实例方法。应如下所示:

Trademark.upsert(attributes)