Ruby on rails 无法在创建回调后更新上的新记录 类模型
如果回调是创建后的回调,为什么返回“ActiveRecord::ActiveRecordError:无法更新新记录”?问题在于“update_column”有一个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::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