Ruby on rails 无法在创建回调后更新上的新记录 类模型

Ruby on rails 无法在创建回调后更新上的新记录 类模型,ruby-on-rails,Ruby On Rails,如果回调是创建后的回调,为什么返回“ActiveRecord::ActiveRecordError:无法更新新记录”?问题在于“update_column”有一个ActiveRecord::Persistence::ClassMethods#update_column方法,它包含行 class Model < ActiveRecord::Base after_create :set_slug def set_slug update_column(:slug, to_slu

如果回调是创建后的回调,为什么返回“ActiveRecord::ActiveRecordError:无法更新新记录”?问题在于“update_column”

有一个
ActiveRecord::Persistence::ClassMethods#update_column
方法,它包含行

class Model < ActiveRecord::Base
  after_create :set_slug

  def set_slug
    update_column(:slug, to_slug)
  end

  def to_slug
    #code to create slug
  end
end
因此,您应该使用
update\u all
,例如:

raise ActiveRecordError, "cannot update a new record" if new_record?

希望它能有所帮助

你的问题在于,
更新列
对新记录不起作用。 为什么不改用update_attributes`呢

 def set_slug
   self.class.where(id: id).update_all(slug: to_slug) if id
 end
如果您愿意,那么您也可以尝试以下方法

  after_create do
    self.update_attributes(slug: to_slug)
  end

同时检查模型侧的验证。这也可能会导致问题。

它正在使用mepaste粘贴完整的错误堆栈。我不明白为什么投票结果会被否决。问题很清楚,这是一个
后的_create
回调,因此记录应该已经被持久化了。
if new_record?
  return
else
 update_column(:slug, to_slug)
end